LDR + Attiny85

Hallo Zusammen,

es ist zum verzweifeln! Ich möchte, dass zwei LEDs in Abhängigkeit von der Helligkeit (LDR) anfangen zu blinken.
Auf meinem Arduino UNO gar kein Problem! Aber wenn ich den Code auf das ATTiny85 übertrage fangen die LEDs
gleich an zu blinken und der LDR scheint keine Rolle zu spielen, egal welche Helligkeit vorhanden ist.
Mein Aufbau ist im Anhang
und mein CODE:

 //Eule 
int LED = 1;
int LED2 = 0;
int LDR = 2;

void setup(){
  pinMode(LED, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LDR, INPUT);
}

void loop() {
  if (analogRead(LDR) >200)
  {
    digitalWrite(LED,HIGH);
    digitalWrite(LED2,LOW);
    delay(5);
    digitalWrite(LED,LOW);
    digitalWrite(LED2,HIGH);
    delay(5);
  }
  else if (analogRead(2) < 199)
  {
    digitalWrite(LED,LOW);
    digitalWrite(LED2,LOW);
  }
  
}

Vielleicht kann mir jemand helfen.
Vielen Dank
SteveBe

Bildschirmfoto 2014-10-10 um 15.03.20.png

LDR durch Poti ersetzen und austesten ob dieser wirklich keine Rolle spielt. Des weiteren ist die Abfrage unzureichend. Der Fall 200 wird nicht abgefragt.

int val_ldr = analogRead(LDR);

if(val_ldr >= 200) {/* ... */}
else {/* ... */}

P.S: Ein delay(5) bei Lampen ist nicht wirklich zu erkennen.

OK, ich habe mal meinen Sketch geändert. Resultat nun blinken die LEDs nicht
mehr, aber sie gehen auch nicht an wenn ich den LDR verdunkle! Ich frag mich
warum das nicht so simpel auf einem attiny ist? Im Übrigen musst ich das delay
so weit reduzieren, da aus irgendwelchen Gründen die Zeit “verschoben” ist. Mit einem
Delay von 500ms blinken die LEDs mit einem ca. 3-5sec Rhythmus. Auch komisch

Nun der geänderte CODE:

int LED = 1;
int LED2 = 0;
int val_ldr = analogRead(2);

void setup(){
  pinMode(LED, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(val_ldr, INPUT);
}

void loop() {
  if (val_ldr >= 200)
  {
    digitalWrite(LED,HIGH);
    digitalWrite(LED2,LOW);
    delay(5);
    digitalWrite(LED,LOW);
    digitalWrite(LED2,HIGH);
    delay(5);
  }
  else if (analogRead(2) < 199)
  {
    digitalWrite(LED,LOW);
    digitalWrite(LED2,LOW);
  }
  
}

Vielen Dank

So wie du das geändert hast, ist das falsch!

Im Header darf weiterhin "int LDR = 2;" stehen.

"int val_ldr = analogRead(LDR);" liefert lediglich den Wert zwischen 0 und 1023 zurück im Bezug auf deine GND - VCC(5V).

Hab mir schon fast gedacht, dass du delay(5) machst, da die Zeiten nicht passen. Nun weiß ich es sicher. Du hast die Fuses vom Attiny85 falsch gesetzt.

Wie sehen die Fuses von dir aus? Ist es möglich das CKDIV8 aktiv ist? Dieser teilt den internen 8MHz Takt durch 8. Somit ist dein Takt 8mal langsamer als geplant. Somit passt es auch, dass delay(500) 4 Sekunden dauert.

Stell bitte mal deine board.txt hier rein, wo du den Attiny85 defeniert hast.

Ich bin kurz unterwegs und werden mich bald äußern. Bis gleich.

Hm, anscheinend passen die Fuses nicht auf Deinem ATTiny. Du musst wenn Du den Attiny mit der gewünschten Taktfrequenz ausgewählt hast einem auf "Bootloader installieren" klicken. Da wird zwar nicht wirklich ein Bootloader instelliert, aber die Taktfrequenz festgelegt. Dann passt auch wieder das delay. Erst wenn das passt, dann kann man nach den weiteren Fehlern schauen. Grüße,

Sven

Hallo,

der Widerstand im Spannungsteiler mit dem LDR sollte ungefähr den gleichen Widerstand wie der LDR haben. Wenn Dein Plan oben stimmt und ich die Farben richtig erkenne, hast Du 220 Ohm, das wäre zu wenig. Nimm da mal einen 10 K-Ohm-Widerstand zum testen.

Du hast Deinen Sketch verschlimmbessert. Das sollte ungefähr so sein:

const int LED = 1;
const int LED2 = 0;
const int LDR = 2;

void setup(){
  pinMode(LED, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LDR, INPUT);
}

void loop() {
  int val_ldr; 
  
  val_ldr = analogRead(LDR);

  if (val_ldr >= 200)
  {
    digitalWrite(LED,HIGH);
    digitalWrite(LED2,LOW);
    delay(100);
    digitalWrite(LED,LOW);
    digitalWrite(LED2,HIGH);
    delay(100); // und natürlich die Fuses richtig setzen, wie oben schon angemerkt
  }
  else
  {
    digitalWrite(LED,LOW);
    digitalWrite(LED2,LOW);
  }
  
}

(Code nicht getestet, hoffe es geht so :-) )

Gruß, Ralf