mich hat nach ca. 15 Jahren mal wieder das Bastellfieber gepackt und nun habe ich mir einen Arduino Duemilanove geholt und bringe mir das ganz nach dem Motto "Learning by Doing" bei.
Jetzt hab ich schon 2 kleine projekte gemacht siehe (video) zieseniss.eu die Programmcodes sind teilweise veränderte beispielcodes.
Jetzt würde ich es gerne bei dem aufbau mit den Blauen LEDs so machen das wenn ich das Poti drehe, das immer nur eine LED leuchtet.
Hier mal der Code:
int led1 = 0;
int led2 = 2;
int led3 = 4;
int led4 = 6;
int led5 = 8;
int led6 = 10;
int apin = 1;
int value = 0;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
}
void loop() // Staendige Wiederholung
{
value = analogRead(apin); // setzt 'value' gleich mit 'pin'
value /= 4; // wandelt 0-1023 in 0-255 um
digitalWrite(led1, value <255);
digitalWrite(led2, value <200);
digitalWrite(led3, value <150);
digitalWrite(led4, value <100);
digitalWrite(led5, value <60);
digitalWrite(led6, value <5);
}
Kann man diesen Code so umbauen das, das so möglich ist?
Kannst du mir das etwas genauer erklären, ich habe leider von der ganzen Programiererei überhaupt keine ahnung. Aber weiß auch leider nicht genau wie ich das in meinen Schädel bekommen soll. Hab schon zig Tuts durch.
Hallo Nordwork, willkommen im Forum.
Von wo kommst Du?
Zu Deiner Frage: eigentlich hat madworm sie schon ausreichend beantwortet, aber vielleicht ist das hier auch hilfreich:
Anstelle von
digitalWrite(led1, value <255);
kannst Du, um nur eine LED einzuschalten, schreiben:
digitalWrite(led1, (value <=255)&&(value >200) );
Und entprechend führst Du das für alle anderen Werte fort, also z.B. auch
digitalWrite(led2, (value <=200)&&(value >150) );
Ich habe das zwar jetzt nicht getestet, aber von der Idee her sollte es doch klappen. Sicher kennst Du den && Operator, der das logische UND bezeichnet.
Ich komme aus dem schönen kleinen Werne das liegt zwischen Dortmund und Münster.
Leider hat der Code von Madworm nicht so ganz funktioniert, wobei der fehler sicherlich bei mir liegt, aber es hat immer nur die erste LED geblinkt.
Jetzt habe ich meinen Code mit dem Code von bohne umgebaut und es funktioniert so wie ich wollte
Naja ich glaube ich werde mir nochmal das Tutorial von (Lady Ada) so 3-7 mal reinhauen.
Wie gesagt das ist für mich der erste Kontakt mit einer Programiersprache (die Basic sachen aus der schule mal weggelassen weil die sowieso alle wieder vergessen sind.)
Ich mach das ganze auch nur weil mir die finger jucken und ich mal wieder etwas "Basteln" muss.
Wenn ihr noch tips habt wie ich den kram in mein kopf bekomme bin ich immer offen, mein system hat nicht so ganz geklappt weil ich das mit dem && Operator nicht wusste und auch so nirgens gefunden habe.
offiziell gibt es den daten typ "byte" auch nicht, eigentlich ist das ein "unsigned char"
bei dem wenigen arbeitsspeicher von der cpu habe ich mir angewoehnt, alle datentype so "klein" wie moeglich zu definieren und da haben mich deine ganzen "ints" dazu verleitet, alles nach byte zu wandeln. das war dann 1x zu viel...
durch das "byte value" hat das analogRead() zwar von 0..1023 ausgelesen, aber es wurden die oberen 8 bits abgesaegt ( ein arduino int ist 2 bytes lang ), so dass nur maximal 255 uebrig bleiben konnte. daher hat die ganze if-logik dann korrekterweise nur hoechstens die erste led angeschaltet.