Skocz do zawartości

UinqeN

Użytkownicy
  • Zawartość

    7
  • Rejestracja

  • Ostatnio

Wszystko napisane przez UinqeN

  1. Witam serdecznie wszystkich użytkowników Mam problem z zadaniem 5.2 , mianowicie nie wiem w którym miejscu kodu powinienem odczytywać kilka znaków a nie jeden. Wydaje mi się ,że powinienem coś zmienić tutaj : while(1) { if(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)) // ten fragment kodu { // sprawdza czy w buforze char c = USART_ReceiveData(USART2); // jest cokolwiek, analogiczna sytuacaj do tej gdzie switch(c) // funckcja nie dopuszcza doprzepelnienia rejestru { reszta kodu wygląda identycznie jak w kursie ,ale i tak go wstawię #include "stm32f10x.h" void send_char(char c) { while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); USART_SendData(USART2, c); } void send_string(const char* s) { while (*s) send_char(*s++); } int main(void) { GPIO_InitTypeDef gpio; USART_InitTypeDef uart; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); GPIO_StructInit(&gpio); gpio.GPIO_Pin = GPIO_Pin_2; gpio.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &gpio); gpio.GPIO_Pin = GPIO_Pin_3; gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &gpio); USART_StructInit(&uart); uart.USART_BaudRate = 115200; USART_Init(USART2, &uart); USART_Cmd(USART2, ENABLE); while (1) { if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE)) { char c = USART_ReceiveData(USART2); switch (c) { case 'a': send_string("Odebrano komunikat A!\r\n"); break; case 'b': send_string("Odebrano komunikat B!\r\n"); break; default: send_string("Nieznany komunikat:(\r\n"); break; } } } } Jeśli ktoś ma jakiś pomysł będę wdzięczny za pomoc
  2. Witam,jestem zaledwie po kursie podstawowym arduino z waszej strony i jako dodatkowa prace domowa postawielm sobie zadanie. Zalozeniem mojego programy jest aby dioda zapalala sie zarowno po podaniu 5v na pin 2 i 4, jesli na ktoryms z nich nie byloby napiecie to dioda nie powinna swiecic. Napisalem taki program void setup() { pinMode (2,INPUT); pinMode (3, OUTPUT); pinMode (4,INPUT); } void loop() { if (digitalRead(2)==HIGH); //jesli na pin 2 podany zostanie stan wysoki while(digitalRead(4)==HIGH) { //odczytaj stan pinu 4 jesli wysoki zasil diode na pinie 3 analogWrite(3,HIGH); // dioda swieci sie } } No ale zalozenia realizowane sa w 50% bo zapalaenie sie diody zalezy tylko i wylacznie od stanu wysokiego na pinie 4 a 2 jest zupelnie poza obiegiem. Wzbudzam te piny podajac im napecie 5v (wyprowadzenie na Arduino Uno). Staralem sie uzywac konfiguracji :if,while ale to nie skutkowalo,a uzycie funkcji switch case mnie przeroslo i nie dalem rady "przerobic jej " pod ten przypadek. Za pomoc z gory dziekuje ^^
  3. Po przeczytaniu tego postu wpisalem program z poza glownej biblioteki. Niestety nic sie nie zmienilo. Moze wyswietlacz jest uszkodzony? ,dziwi mnie jednak fakt ze jest on jak wspomnialem wczesniej zupelnie martwy(poza podswietleniem) nie chce sie skubany dac wysterowac. Wpisalem taki kod #include <LiquidCrystal.h> double odczyt; LiquidCrystal lcd(8,9,4,5,6,7);// informacje do jakich pinow zostal podlaczony nowy wyswietlacz void setup() { lcd.begin(16,2); //deklaracja typu lcd.clear(); lcd.setCursor(0,0); //ustawaienie kursora lcd.print("PROBA 2"); //tkest w wierszu 1 lcd.setCursor(0,1); //ustawienie kursora lcd.print("LCD NIE DZIALA"); } void loop () { } [ Dodano: 04-02-2017, 15:30 ] Juz sie poprawiam, cale arduino czyli podlaczenie arduino uno przez usb do komputera.(samo arduino uno) Nie, podlaczylem inny wyswietlacz wedlug tego poradnika : Nie roziwazuje to mojego problemu z oblsuga lcd shielda, wszystko inne jest cacy Zakupilem shielda ze strony :http://allegro.pl/modul-shield-lcd-arduino-wyswietlacz-klawiatura-i5818224548.html?snapshot=MjAxNy0wMS0yOFQxNjozMjoyN1o7YnV5ZXI7YTRiZjIyN2I0N2I3NTk3OTE5NjRhZjRkYjU2MTllMjI2NGE2YTkxM2ViYWQ4ZWY5ZWRiMTA2NzM5ODZjZTdhYw== a co do poradinka to skorzystalem z tego :https://www.youtube.com/watch?v=gAkc5LShEXY&t=214s mistrz z filmiku zaczyna tlumaczyc zmiane od 2:21 ,a co do programi jaki dzialal przez plytke stykowa to ten : #include <LiquidCrystal.h> double odczyt; LiquidCrystal lcd(8,9,4,5,6,7);// informacje do jakich pinow zostal podlaczony nowy wyswietlacz void setup() { lcd.begin(16,2); //deklaracja typu lcd.clear(); lcd.setCursor(0,0); //ustawaienie kursora lcd.print("Nap. Odczytane"); //tkest w wierszu 1 lcd.setCursor(0,1); //ustawienie kursora lcd.print("0.000V"); } void loop() { odczyt = analogRead(A0)*5.0/1023.0; lcd.setCursor(0,1); lcd.print(odczyt); delay(200); } Mam nadzieje ze teraz sie dogadamy
  4. Blad poczatkujacego , juz uzupelniam opis. Caly programator arduino uno dziala bez zarzutow, problem pojawia sie w momencie podalczenie lcd shielda. Jak wspomnialem wczesniej wyswietlacz ten jest jakby martwy , reaguje tylko na zasilanie (jest tylko i wilacznie pdswietlany). W przypadku podaleczenia samego wyswietlacza lcd przez plytke stykowa wszystko dziala tak jak powinno. Ten program jest przykladowy , poprostu nie moge wzbudzic wyswietalacza ani wyswietlac na nim czego kolwiek Ps. Zmeinilem opcje programatora wedlug podpowiedzi, niestety nie roziwazuje to mojego problemu A podpiac na odwort lcd shielda poprostu sie nie da wyciecia miedzy pinami wykluczaja taki blad
  5. Witam forumowiczow, mam problem jak wspomnialem w temacie z lcd sheild . Wprowadzam taki kod /* LiquidCrystal Library - Autoscroll Demonstrates the use a 16x2 LCD display. The LiquidCrystal library works with all LCD displays that are compatible with the Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface. This sketch demonstrates the use of the autoscroll() and noAutoscroll() functions to make new text scroll or not. The circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D4 pin to digital pin 5 * LCD D5 pin to digital pin 4 * LCD D6 pin to digital pin 3 * LCD D7 pin to digital pin 2 * LCD R/W pin to ground * 10K resistor: * ends to +5V and ground * wiper to LCD VO pin (pin 3) Library originally added 18 Apr 2008 by David A. Mellis library modified 5 Jul 2009 by Limor Fried (http://www.ladyada.net) example added 9 Jul 2009 by Tom Igoe modified 22 Nov 2010 by Tom Igoe This example code is in the public domain. http://arduino.cc/en/Tutorial/LiquidCrystalAutoscroll */ // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(8,9,4,5,6,7); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); } void loop() { // set the cursor to (0,0): lcd.setCursor(0, 0); // print from 0 to 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(500); } // set the cursor to (16,1): lcd.setCursor(16, 1); // set the display to automatically scroll: lcd.autoscroll(); // print from 0 to 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(500); } // turn off automatic scrolling lcd.noAutoscroll(); // clear screen for the next loop: lcd.clear(); } Piny w LiquidCrystal lcd(8,9,4,5,6,7); zmienilem przez wzglad na internetowy poradnik. Sam w swobie wyswietlacz nie pokazuje mi niczego, nawet rzedu prostokatow ktore powinieniem byl wyregulowac potencjometrem znajdujacym sie na plycie. Moj wyswietlacz jest niebieski i taki z niego pozytek. Podlaczenie fizyczne zle nie jest bo nie da sie podpiac tej wkladki(mam na mysli lcd shield) na odwrot. W narzedziach plytka jak i com sa zgodne,za to mam ustawiony programator na USBasp na pozostalych ustawianiecha takze probowalem wgrac ten kod ale efekt byl ten sam. Jesli ktos ma chwile to poprosze o wsparcie
  6. Wszystko bajka zarowno ta jak i poprzednie lekcje(do reszty jeszcze mi daleko ) Jesli chodzi o PWM to nie moglem zlokalizowac w tej czesci kusry informacji jak zmieniac czestotliwosc, z tego co wyczytalem w internecie funkcja analogWrite() ustala wartosc czestotliwosci na 490Hz a istnieje moze inna funkncja badz przelicznik dzieki ktoremy bedzie mozna ja wprowadzic?(pytam bo troche przerobilem powyzszy program i zrobilem pwma tegulowanego potencjometrem) Jeli ktos ma czas to prosze o wsparcie
×
×
  • Utwórz nowe...