Skocz do zawartości

Mabo

Użytkownicy
  • Zawartość

    16
  • Rejestracja

  • Ostatnio

Reputacja

1 Neutralna

O Mabo

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Witam, czy podłączenie do Arduino wyświetlacza z takim sterownikiem będzie różniło się od klasyka z HD44780?
  2. Dziękuję wszystkim za pomoc - problem leżał w bibliotece a dokładnie pliku Potentiometer.h. Udało mi się znaleźć właściwa (nie najnowszą) wersje - i teraz wszystko śmiga
  3. Najprostszy kod (płytka pracuje jako adapter do podłączenia fizycznych elementów do symulatora lotu) DCS: #define DCSBIOS_IRQ_SERIAL #include <DcsBios.h> DcsBios::Potentiometer tacVolKnob("TAC_VOL_KNOB", A0); void setup() { DcsBios::setup(); } void loop() { DcsBios::loop(); } U kolegi działa to OK, u mnie niestety potencjometr "zapycha" komunikację. Wymienię płytkę MEGA i zobaczymy - innej przyczyny nie widzę. Ale oczywiście będę wdzięczny za pomysł jeśli jest jakaś alternatywa PS. Sprawdziłem dla pewności bibliotekę DcsBios.h - mam ostatnią wersję: czyli to też nie to.
  4. Inaczej zapytam: w monitorze portu szeregowego powinny pojawiać się symbole tylko w czasie obrotu czy non stop?
  5. Mam pytanie: czy potencjometr wysyła sygnał bez przerwy czy tylko w momencie obrotu? Mam sprzeczne informacje i nie wiem czy problem leży w płytce czy to normalne zachowanie. Czy ewentualnie jest możliwe zastopowanie tego sygnału jeśli potencjometr pozostaje nieruchomy? Podłączenie kilku częściowo obróconych potencjometrów powoduje zawieszenie płytki.
  6. To ręczne wpisywanie mi jakoś nie wychodzi - cyfry nakładają się na siebie. Co robię źle? #define DCSBIOS_IRQ_SERIAL #include <SevenSeg.h> #include <DcsBios.h> SevenSeg disp(2, 3, 4, 5, 6, 7, 8); const int numOfDigits = 6; int digitPins1[] = {A0,A1}; int digitPins2[] = {A2}; int digitPins3[] = {A3}; int digitPins4[] = {A4,A5}; DcsBios::StringBuffer<2> vhfamFreq1StrBuffer(0x1190, NULL); DcsBios::IntegerBuffer vhfamFreq2Buffer(0x118e, 0x00f0, 4, NULL); DcsBios::IntegerBuffer vhfamFreq3Buffer(0x118e, 0x0f00, 8, NULL); DcsBios::StringBuffer<2> vhfamFreq4StrBuffer(0x1192, NULL); void setup() { DcsBios::setup(); disp1.setDigitPins(numOfDigits, digitPins1); disp2.setDigitPins(numOfDigits, digitPins2); disp3.setDigitPins(numOfDigits, digitPins3); disp4.setDigitPins(numOfDigits, digitPins4); } void loop() { DcsBios::loop(); disp1.write(vhfamFreq1StrBuffer.getData()); disp1.clearDisp(); disp2.write(vhfamFreq2Buffer.getData()); disp2.clearDisp(); disp3.write(vhfamFreq3Buffer.getData()); disp3.clearDisp(); disp4.write(vhfamFreq4StrBuffer.getData()); disp4.clearDisp(); }
  7. Witam! Mam problem z powyższym - chciałem podpiąć 5 1 i 2-sekcyjnych wyświetlaczy ale powyżej 2-3 zaczynają migotać. Zakładam że to odświeżanie - czy można coś na to poradzić? Mój projekt zakłada export danych z symulatora lotu DCS A-10C stąd biblioteka DCS-BIOS. #define DCSBIOS_IRQ_SERIAL #include <SevenSeg.h> #include <DcsBios.h> SevenSeg disp1(2, 3, 4, 5, 6, 7, 8); SevenSeg disp2(2, 3, 4, 5, 6, 7, 8); SevenSeg disp3(2, 3, 4, 5, 6, 7, 8); SevenSeg disp4(2, 3, 4, 5, 6, 7, 8); SevenSeg disp5(2, 3, 4, 5, 6, 7, 8); const int numOfDigits1 = 2; const int numOfDigits2 = 1; const int numOfDigits3 = 1; const int numOfDigits4 = 2; const int numOfDigits5 = 2; int digitPins1[] = {A0,A1}; int digitPins2[] = {A2}; int digitPins3[] = {A3}; int digitPins4[] = {A4,A6}; int digitPins5[] = {12,11}; DcsBios::StringBuffer<2> vhfamFreq1StrBuffer(0x1190, NULL); DcsBios::StringBuffer<1> vhfamFreq2StrBuffer(0x118e, NULL); DcsBios::StringBuffer<1> vhfamFreq3StrBuffer(0x118e, NULL); DcsBios::StringBuffer<2> vhfamFreq4StrBuffer(0x1192, NULL); DcsBios::StringBuffer<2> vhfamPresetStrBuffer(0x118a, NULL); void setup() { DcsBios::setup(); disp1.setDigitPins(numOfDigits1, digitPins1); disp2.setDigitPins(numOfDigits2, digitPins2); disp3.setDigitPins(numOfDigits3, digitPins3); disp4.setDigitPins(numOfDigits4, digitPins4); disp5.setDigitPins(numOfDigits5, digitPins5); } void loop() { DcsBios::loop(); disp1.write(vhfamFreq1StrBuffer.getData()); disp1.clearDisp(); disp2.write(vhfamFreq2StrBuffer.getData()); disp2.clearDisp(); disp3.write(vhfamFreq3StrBuffer.getData()); disp3.clearDisp(); disp4.write(vhfamFreq4StrBuffer.getData()); disp4.clearDisp(); disp5.write(vhfamPresetStrBuffer.getData()); disp5.clearDisp(); }
  8. Dzięki Panowie - już wszystko działa
  9. Sorry, ale jestem jeszcze zielony. Jaką pętle powinienem zastosować / ewentualnie istniejącą jak zmodyfikować?
  10. Fakt. Teraz czyści - pojawił się inny zgryz: przy wpisaniu MWS wyświetla zapis RDY i od razu OFF - czemu nie wychodzi z pętli po spełnieniu warunku i realizuje kolejną? #include <Wire.h> // standardowa biblioteka Arduino #include <LiquidCrystal_I2C.h> // dolaczenie pobranej biblioteki I2C dla LCD LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Ustawienie adresu ukladu na 0x27 int wypelnienie = 0; int zmiana = 1; String odebraneDane = ""; void setup(){ Serial.begin(9600); lcd.begin(16,2); // Inicjalizacja LCD 2x16 lcd.backlight(); // zalaczenie podwietlenia lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna) lcd.print("OFF OFF OFF OFF"); lcd.setCursor(0,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("MWS JMR RWR DISP"); } void loop(){ Serial.println(odebraneDane); if(Serial.available() >0){ odebraneDane = Serial.readStringUntil('\n'); } if (odebraneDane == "MWS") { if (wypelnienie == 0) { lcd.setCursor(0,0); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("RDY"); wypelnienie = wypelnienie + zmiana; odebraneDane = ""; delay(1000); } if (wypelnienie == 1) { lcd.setCursor(0,0); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("OFF"); wypelnienie = 0; odebraneDane = ""; delay(1000); } } if (odebraneDane == "JMR") { lcd.setCursor(4,0); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("RDY"); odebraneDane = ""; } if (odebraneDane == "RWR") { lcd.setCursor(8,0); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("RDY"); odebraneDane = ""; } if (odebraneDane == "DISP") { lcd.setCursor(12,0); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("RDY"); odebraneDane = ""; } }
  11. Mam zagwozdkę - próbuję napisać kod który umożliwi zmianę wyświetlanego tekstu po wpisaniu odpowiedniej sekwencji znaków w monitorze. Na razie taka zmiana jest ustawiona dla pierwszej pozycji MWS; po ponownym wpisaniu zaczyna naprzemiennie wyświetlacz oba przewidziane zestawy znaków (OFF i RDY) zamiast tylko ten drugi. Niestety mam z tym problem - będę wdzięczny za wskazówki jak to rozwiązać. #include <Wire.h> // standardowa biblioteka Arduino #include <LiquidCrystal_I2C.h> // dolaczenie pobranej biblioteki I2C dla LCD LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Ustawienie adresu ukladu na 0x27 int wypelnienie = 0; int zmiana = 1; String odebraneDane = ""; void setup(){ Serial.begin(9600); lcd.begin(16,2); // Inicjalizacja LCD 2x16 lcd.backlight(); // zalaczenie podwietlenia lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna) lcd.print("OFF OFF OFF OFF"); lcd.setCursor(0,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("MWS JMR RWR DISP"); } void loop(){ if(Serial.available() >0){ odebraneDane = Serial.readStringUntil('\n'); } if (odebraneDane == "MWS") { if (wypelnienie == 0) { lcd.setCursor(0,0); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("RDY"); wypelnienie = wypelnienie + zmiana; delay(1000); } if (wypelnienie == 1) { lcd.setCursor(0,0); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("OFF"); wypelnienie = 0; delay(1000); } } if (odebraneDane == "JMR") { lcd.setCursor(4,0); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("RDY"); } if (odebraneDane == "RWR") { lcd.setCursor(8,0); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("RDY"); } if (odebraneDane == "DISP") { lcd.setCursor(12,0); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("RDY"); } }
  12. Przy kompilacji: no matching function for call to 'LiquidCrystal_I2C::begin()' Powinienem usunąć wcześniejsze biblioteki Liquid??? [ Dodano: 25-03-2016, 18:33 ] OK, problem rozwiązany. usunąłem wszystkie biblioteki Liquid, zainstalowałem na nowo soft i wessałem tylko tą bibliotekę ze strony. I wszystko śmiga!
  13. /* * LCM1602 & Arduino Uno * VCC - > 5 V * GND - GND * SCL -> A5 * SDA -> A4 */ #include <Wire.h> // standardowa biblioteka Arduino #include <LiquidCrystal_I2C.h> // dolaczenie pobranej biblioteki I2C dla LCD LiquidCrystal_I2C lcd(0x27, 16, 2); // Ustawienie adresu ukladu na 0x27 void setup() { lcd.begin(16,2); // Inicjalizacja LCD 2x16 lcd.backlight(); // zalaczenie podwietlenia lcd.setCursor(0,0); // Ustawienie kursora w pozycji 0,0 (pierwszy wiersz, pierwsza kolumna) lcd.print("Hello, world!"); delay(500); lcd.setCursor(0,1); //Ustawienie kursora w pozycji 0,0 (drugi wiersz, pierwsza kolumna) lcd.print("BOTLAND.com.pl"); } void loop() { lcd.backlight(); // zalaczenie podswietlenia delay(5000); lcd.noBacklight(); // wylaczenie podswietlenia delay(5000); }
  14. Kod się skompilował ale brak efektu działania po wgraniu. Coś robię nie tak?
  15. true no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int, int, bool)' 1 no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int, int, int)'
×
×
  • Utwórz nowe...