INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Bitand funktioniert nicht wie ich es erwarte
07.09.2013, 21:30
Beitrag #1
Bitand funktioniert nicht wie ich es erwarte
Tach,

bevor ich gleich meine Tischplatte zerbeiße wende ich mich mal an euch: Ich möchte 4 LEDs über einen einzige Zahl ansteuern.

Bsp:

echo 1 > /dev/ttyACM0 (erste LED soll leuchten)
echo 2 > /dev/ttyACM0 (zweite LED soll leuchten)
echo 3 > /dev/ttyACM0 (erste und zweite LED soll leuchten)
echo 8 > /dev/ttyACM0 (vierte LED soll leuchten)

Das ganze habe ich so umgesetzt:

Code:
#define pincount 4
int myPins[] = {2, 4, 6, 8};  
int i;
unsigned int incomingInt = 0;   // for incoming serial data
unsigned int value;

void setup() {

    for (i = 0; i < pincount; i = i + 1) {
      pinMode(myPins[i], OUTPUT);
    }
    Serial.begin(115200);     //
}

void loop() {
  
    if (Serial.available() > 0)
    {
      //read the incoming byte:
      incomingInt = Serial.parseInt();

      for (i = 0; i < pincount; i=i+1)
      {
        value= pow(2,i);
        if ((incomingInt & value) == value )        {
          digitalWrite(myPins[i], HIGH); // LED anschalten
        } else {
          digitalWrite(myPins[i], LOW); // LED anschalten
        }
      }

    }

}

Wahrscheinlich ist mein letzter Programmierkurs in C zu lange her....jedenfalls funktionieren die echos mit 1 und 2 wie erwartet.

Bei
Code:
echo 3 > /dev/ttyACM0
leuchten jedoch nicht die ersten beiden, sondern die ersten drei LED. Bei
Code:
echo 4 > /dev/ttyACM0
passiert überhaupt nix
Mit
Code:
echo 7 > /dev/ttyACM0
leuchten alle 4 LED. Bei
Code:
echo 15 > /dev/ttyACM0
leuchten auch alle.

Wo ist mein Denkfehler?

Schorsch
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.09.2013, 21:58
Beitrag #2
RE: Bitand funktioniert nicht wie ich es erwarte
Ich hab jetzt mal folgendes probiert:

Code:
void loop() {

for (j=0; j<16; j++)
{
      delay(1000);
      for (i = 0; i < pincount; i++)
      {
        value= pow(2,i);
        Serial.print("j:");
        Serial.print(j);
        Serial.print(" value:");
        Serial.println(value);
      }
}

}
Folgende Ausgabe bekomme ich:

Code:
j:7 value:1
j:7 value:2
j:7 value:3
j:7 value:7
j:8 value:1
j:8 value:2
j:8 value:3
j:8 value:7
j:9 value:1
j:9 value:2
j:9 value:3
j:9 value:7

Offenbar ist 2 hoch 3 = 7. Spinne ich jetzt total oder mein Arduino Leonardo?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.09.2013, 07:48
Beitrag #3
RE: Bitand funktioniert nicht wie ich es erwarte
Ich hab jetzt pow() durch folgendes erstetzt:
Code:
if (i == 0 ) {
      value = 1;
} else {
      value = 1 << i;
}
Damit funktioniert es.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  TFT Display will nicht so wie ich Franzel007 10 247 12.05.2018 09:28
Letzter Beitrag: amithlon
  Neuling kommt nicht weiter, ws2812 If abfragen Tabata 8 654 19.04.2018 14:07
Letzter Beitrag: Tommy56
  millis() zählt nicht weiter sowerum 8 518 09.04.2018 17:55
Letzter Beitrag: Tommy56
  ATMega 328P Bootloader funktioniert nur 1x Gelegenheitsbastler 4 284 08.04.2018 16:09
Letzter Beitrag: Chopp
  Windmesser auslesen will noch nicht so recht klappen.. Stargazer 12 628 05.04.2018 10:54
Letzter Beitrag: amithlon
  Bootlader Brennen funktioniert nicht Ardusil 6 458 18.03.2018 10:53
Letzter Beitrag: hotsystems
  Bool wird nicht umgesetzt Wampo 3 337 10.03.2018 23:04
Letzter Beitrag: Tommy56
  NTC für LCD-Anzeige.Weiter bekomme ich nicht hin malsehen 17 1.046 09.03.2018 20:28
Letzter Beitrag: malsehen
  328P geht nicht mehr [gelöst] Harry 37 2.662 04.03.2018 19:57
Letzter Beitrag: Harry
  UDP Paket über UART senden (nicht SPI) Wampo 9 646 04.03.2018 18:49
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste