neděle 26. března 2017

Jednoduché zobrazení přijatých dat po sériové lince Arduina

Při testování komunikace po sériové lince se může někdy hodit si přijatá data zobrazit.
Napíšeme si malý program, který nám zobrazí přijatá data na osmi led diodách. Z  digitálních pinů 2 až 9, připojíme osm LED diod přes rezistory na zem (Gnd). Takže svítit budou při Log_1 (HIGH). Přijatá data se maskují jednotlivými bity a pokud je výsledek pravda tak rozsvítí příslušnou diodu.


#define LedPin1 2 
#define LedPin2 3
#define LedPin3 4 
#define LedPin4 5
#define LedPin5 6 
#define LedPin6 7
#define LedPin7 8 
#define LedPin8 9

void setup() {
  // put your setup code here, to run once:

  Serial.begin(9600);

  pinMode(LedPin1, OUTPUT);
  pinMode(LedPin2, OUTPUT);
  pinMode(LedPin3, OUTPUT);
  pinMode(LedPin4, OUTPUT);
  pinMode(LedPin5, OUTPUT);
  pinMode(LedPin6, OUTPUT);
  pinMode(LedPin7, OUTPUT);
  pinMode(LedPin8, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  if(Serial.available() > 0)
  {
    byte ch = Serial.read();

    digitalWrite(LedPin1, LOW);
    digitalWrite(LedPin2, LOW);
    digitalWrite(LedPin3, LOW);
    digitalWrite(LedPin4, LOW);
    digitalWrite(LedPin5, LOW);
    digitalWrite(LedPin6, LOW);
    digitalWrite(LedPin7, LOW);
    digitalWrite(LedPin8, LOW);
    
    if (ch & B00000001) digitalWrite(LedPin1,HIGH);
    if (ch & B00000010) digitalWrite(LedPin2,HIGH);
    if (ch & B00000100) digitalWrite(LedPin3,HIGH);
    if (ch & B00001000) digitalWrite(LedPin4,HIGH);
    if (ch & B00010000) digitalWrite(LedPin5,HIGH);
    if (ch & B00100000) digitalWrite(LedPin6,HIGH);
    if (ch & B01000000) digitalWrite(LedPin7,HIGH);
    if (ch & B10000000) digitalWrite(LedPin8,HIGH);
      
  }
}

Žádné komentáře:

Okomentovat