Autor Wątek: DCS A-10C home cockpit  (Przeczytany 18797 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Odp: DCS A-10C home cockpit
« Odpowiedź #105 dnia: Marca 02, 2017, 15:28:18 »
Jeżeli chcesz je od strony emitera to musisz dać tranzystor typu PNP – wtedy będzie działać pod warunkiem że wyjście D3 daje +5V w stanie wysokim (ja nie wiem bo nie znam Arduino). Wtedy załączysz je jak na D3 dasz „0”, a wyłączysz jak na D3 dasz „+5V”.

Edit: I żeby poprawnie było - wtedy też diody będą od strony kolektora, tyle że kolektor w PNP jest "po drugiej stronie" więc diody będą pomiędzy masą a tranzystorem. Bo rozumiem że o to Ci chodziło.

Odp: DCS A-10C home cockpit
« Odpowiedź #106 dnia: Marca 02, 2017, 16:01:18 »
Tak, właśnie o to :) .
Latamy dzisiaj?

Oficer polityczny Padi-Van. (Prostak-1)

Odp: DCS A-10C home cockpit
« Odpowiedź #107 dnia: Marca 17, 2017, 15:40:16 »
Marcin_B  daj dane jak połączyłęś wyświetlacz do CMSP, wklej plik wsadowy do Arduino. Wcześniej napisałęś, że oryginalnie wyświetlacz ma 19 znaków, ty zastosowałeś 16 ( w sprzedaży widziałem tylko jeszcze 2x20), z jakiego powodu ? No i  czy zastosowałeś tą płytkę  dodatkową do wyświetlacza czy nie, od tego wiele zależy przy wpisywaniu do pliku wsadowego do Arduino...?
Latamy dzisiaj?

Oficer polityczny Padi-Van. (Prostak-1)

Offline Marcin_B

  • *
  • MABO
Odp: DCS A-10C home cockpit
« Odpowiedź #108 dnia: Marca 18, 2017, 17:18:49 »
U mnie wyświetlacz 16x2 (lepiej pasuje wymiarowo) - konieczne było skrócenie niektórych komunikatów. Jak chcesz mieć tak jak w oryginale to zamontuj 20x2.
Wyświetlacz powinien być zgodny z normą HD 44780 - umożliwia podłączenie po I2C - tylko 4 kable do Arduino.

Poza wyświetlaczem musisz kupic coś takiego:
https://botland.com.pl/konwertery-pozostale/2352-konwerter-i2c-dla-wyswietlacza-lcd-hd44780.html?search_query=konwerter&results=262

Kod do wgrania dla 16x2 (LCD plus wszystkie przyciski i potencjometr):

#define DCSBIOS_IRQ_SERIAL
#include <DcsBios.h>
#include <Servo.h>
#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

//20, 21 - zasilanie

DcsBios::Switch3Pos cmspMws("CMSP_MWS", 22, 23);
DcsBios::Switch3Pos cmspJmr("CMSP_JMR", 24, 25);
DcsBios::Switch3Pos cmspRwr("CMSP_RWR", 26, 27);
DcsBios::Switch3Pos cmspDisp("CMSP_DISP", 28, 29);

DcsBios::Switch2Pos cmspArw1("CMSP_ARW1", 33);
DcsBios::Switch2Pos cmspArw2("CMSP_ARW2", 32);
DcsBios::Switch2Pos cmspArw3("CMSP_ARW3", 31);
DcsBios::Switch2Pos cmspArw4("CMSP_ARW4", 30);

const byte cmspModePins[5] = {35, 34, 37, 36, 39};
DcsBios::SwitchMultiPos cmspMode("CMSP_MODE", cmspModePins, 5);

DcsBios::Switch2Pos cmspJtsn("CMSP_JTSN", 38);
DcsBios::Switch2Pos cmspRtn("CMSP_RTN", 41);

DcsBios::Switch3Pos cmspUpdn("CMSP_UPDN", 43, 40);

void onCmsp1Change(char* newValue) {
    lcd.setCursor(0, 0);
    lcd.write(newValue[0]);
    lcd.write(newValue[1]);
    lcd.write(newValue[2]);
    lcd.write(newValue[3]);

    lcd.write(newValue[5]);
    lcd.write(newValue[6]);
    lcd.write(newValue[7]);
    lcd.write(newValue[8]);

    lcd.write(newValue[10]);
    lcd.write(newValue[11]);
    lcd.write(newValue[12]);
    lcd.write(newValue[13]);

    lcd.write(newValue[15]);
    lcd.write(newValue[16]);
    lcd.write(newValue[17]);
   
}
DcsBios::StringBuffer<19> cmsp1Buffer(0x1000, onCmsp1Change);

void onDcsBiosFrameSync() {
 
}

void onCmsp2Change(char* newValue) {
    lcd.setCursor(0, 1);
    lcd.write(newValue[0]);
    lcd.write(newValue[1]);
    lcd.write(newValue[2]);
    lcd.write(newValue[4]); //spacja
   
    lcd.write(newValue[5]);
    lcd.write(newValue[6]);
    lcd.write(newValue[7]);
    lcd.write(newValue[9]); //spacja
   
    lcd.write(newValue[10]);
    lcd.write(newValue[11]);
    lcd.write(newValue[12]);
    lcd.write(newValue[14]); //spacja

    lcd.write(newValue[15]);
    lcd.write(newValue[16]);
    lcd.write(newValue[17]);
    lcd.write(newValue[18]);

    }
   
DcsBios::StringBuffer<19> cmsp2Buffer(0x1014, onCmsp2Change);

void setup() {
  DcsBios::setup();
  lcd.begin(16, 2);
  lcd.clear();
}

void loop() {
  DcsBios::loop();
}

Odp: DCS A-10C home cockpit
« Odpowiedź #109 dnia: Marca 18, 2017, 17:33:05 »
Wiem, że można podłączyć i bez tego. Ze zwykłą biblioteką #include <LiquidCrystal.h>  (z takA pokazują na filmiku ze strony DCS-Bios i bez tej przejściówki), z tym ustrojstwem, to chyba da się podłączyć więcej takich wyświetlaczy do jednego Arduino. Coś pisałeś, że wprowadzałeś modyfikacje by zastosować wyświetlacz 2x16, które to linijki?
« Ostatnia zmiana: Marca 19, 2017, 11:41:29 wysłana przez KosiMazaki »
Latamy dzisiaj?

Oficer polityczny Padi-Van. (Prostak-1)