Hallo zusammen,
ich habe mal ein Lauflicht mit acht LED's zusammengebastellt und den dazugehoerigen Sketch geschrieben.
Nur habe ich ein einziges Problem. Das ganze laeuft erst nur dann an, wenn in der 'setup'-Funktion eine Zeile mit
'Serial.begin(xxxx);' oder 'Serial.end();' vorhanden ist, obwohl ich mit der seriellen Uebertragung ueberhaupt nichts
zu tun haben moechte. Wo ist also der Fehler im Sketch? Meine Hardware ist ein Arduino Uno-Board Rev. 2, die
Arduino-IDE hat die Verison 0022.
Fuer eine plausible Antwort waere ich sehr dankbar ... :-)
greetz
/
*
LED-Lauflicht mit acht LED's
*/
const byte BIN1START=B00000001;
const byte BIN2START=B10000000;
const int ZEIT=250;
byte i;
byte Rest;
byte Wert;
byte BinWert1=0;
byte BinWert2=0;
byte BinWert3=0;
byte BinWert4=0;
byte BinWert5=0;
byte BinWert6=0;
byte BinWert7=0;
byte BinWert8=0;
boolean OPin2=LOW;
boolean OPin3=LOW;
boolean OPin4=LOW;
boolean OPin5=LOW;
boolean OPin6=LOW;
boolean OPin7=LOW;
boolean OPin8=LOW;
boolean OPin9=LOW;
void setup()
{
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
Serial.end();
}
void loop()
{
Wert=BIN1START;
for (i=0; i<7; i++)
{
Wert=Wert<<1;
BinKonvert();
delay(ZEIT);
}
Wert=BIN2START;
for (i=0; i<7; i++)
{
Wert=Wert>>1;
BinKonvert();
delay(ZEIT);
}
}
void BinKonvert()
{
BinWert8=Wert/128;
Rest=Wert-(BinWert8*128);
BinWert7=Rest/64;
Rest=Rest-(BinWert7*64);
BinWert6=Rest/32;
Rest=Rest-(BinWert6*32);
BinWert5=Rest/16;
Rest=Rest-(BinWert5*16);
BinWert4=Rest/8;
Rest=Rest-(BinWert4*8);
BinWert3=Rest/4;
Rest=Rest-(BinWert3*4);
BinWert2=Rest/2;
Rest=Rest-(BinWert2*2);
BinWert1=Rest;
if (BinWert1==1) { OPin2=HIGH; } else { OPin2=LOW; }
if (BinWert2==1) { OPin3=HIGH; } else { OPin3=LOW; }
if (BinWert3==1) { OPin4=HIGH; } else { OPin4=LOW; }
if (BinWert4==1) { OPin5=HIGH; } else { OPin5=LOW; }
if (BinWert5==1) { OPin6=HIGH; } else { OPin6=LOW; }
if (BinWert6==1) { OPin7=HIGH; } else { OPin7=LOW; }
if (BinWert7==1) { OPin8=HIGH; } else { OPin8=LOW; }
if (BinWert8==1) { OPin9=HIGH; } else { OPin9=LOW; }
digitalWrite(2,OPin2);
digitalWrite(3,OPin3);
digitalWrite(4,OPin4);
digitalWrite(5,OPin5);
digitalWrite(6,OPin6);
digitalWrite(7,OPin7);
digitalWrite(8,OPin8);
digitalWrite(9,OPin9);
}