Wuerfel LED´s zu dunkel!

Hi,

ich habe ein Wuerfel gebaut der via Lichtsensor reagieren soll.
(Dunkel = Wuerfeln)
Soweit ich das sehe funktioniert das auch mit mein Code
Nur sind die LED`s relativ schwach !
Liegt das an den Code oder an meine Widerstände ?
Der Photoresitor liefert über Seriellen Monitor auch nur werte 1023 Hell bis 1021 Dunkel ,
dachte eigentlich wenn dunkel dann wert deutlich unter 800

int led[] = {13,12,11,10,9,8,7};                              // Variablen für die LEDs

int augen[6][7] = {{0,0,0,1,0,0,0},                           // Würfelzahl 1
                   {1,0,0,0,0,0,1},                           // Würfelzahl 2
                   {1,0,0,1,0,0,1},                           // Würfelzahl 3
                   {1,0,1,0,1,0,1},                           // Würfelzahl 4
                   {1,0,1,1,1,0,1},                           // Würfelzahl 5
                   {1,1,1,0,1,1,1}};                          // Würfelzahl 6
                   
int licht = 0;                                               // Variable für licht
int lichtStatus;                                             // Statusabfrage vom licht
void setup() {
  Serial.begin(9600);
  pinMode(0, OUTPUT);  /*Pin0 Ausgang*/
    
}

void loop() {
  licht = analogRead(0);  /*wert von pin 0 lesen*/
  Serial.println(licht);  /*wert von pin 0 ausgeben / Schreiben*/
  
if (licht < 1023) {        /*kleiner als 1023)*/
  for(int index1 = 0; index1 <= 50; index1++)              // Liefere 51 Zufallszahlen
     {
        int zufall = random(0,6);                             // Gib eine zufällige Zahl zwischen 1 und 6 an
      
       for(int index2 = 0; index2 <= 6; index2++)
       {
          digitalWrite(led[index2], augen[zufall][index2]);
       }

       delay(20);
     }
  }                                                           // die 51. Zahl ist die gewürfelte Zahl
}

Wuerfel_mit_lichtsensor.ino (1,4 KB)

LED-Pins auf OUTPUT schalten.

Sollte der nicht als Spannungsteiler angeschlossen sein?

1023 ist der Maximalwert, nur ein Bit drunter abzufragen kann nicht stimmen.

aktuell ist pinMode(0, OUTPUT);

du meinst ich soll es so schreiben ...

pinMode(13,12,11,10,9,8,7, OUTPUT);

aber was mach ich mit pin 0 ?

Absolut korrekt:

  • Grünes Kabel auf Steckreihe 24 (wo der LDR und der 10 kOhm Widerstand verbunden sind)
  • Ein zusätzliches schwarzes Kabel von Masse/GND zum dann offenen Ende des 10kOhm Widerstands

und schon sieht die Welt anders aus :wink:

1 Like

Das meint er sicher nicht:

Der Aufruf von pinMode() muss für jeden Pin separat durchgeführt werden.

pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
// und so weiter...

oder per Schleife:

for (int i = 0; i < 7;i++) pinMode(led[i],OUTPUT);

Falls mit "Pin 0" der Pin A0 gemeint ist, handelt es sich hierbei um einen analogen Eingang, für dessen Verwendung hier nichts vorbereitet werden muss.

Oder - viel eleganter - so wie es @combie beschrieben hat ... :wink:

Das frage ich mich auch!
Ich behaupte: Du machst Unsinn damit.
Der Pin wird von Serial benötigt.

Da im Sketch daran rum zu fummeln dürfte in die Hose gehen.

Das sieht gut aus!

Arduino Doku nicht gelesen?
Offensichtlich: Nein!
Bitte nachholen.

Nach lesen der C++ Grundlagen könntest du auf diese glorreiche Idee kommen

const byte led[] = {13,12,11,10,9,8,7};


// in setup
for(auto l:led) pinMode(l, OUTPUT);
1 Like

wo finde ich den die Arduino Doku. ??? die lese ich mir dann durch !!
Bin Anfänger und bin eh schon zufrieden das mein Projekt zumindest bissel Funktioniert (leuchtet und nicht Funkt) :-))

Links oben Klick auf Arduino.cc, dann unter Documentation... (ist SEHR schwer zu finden :shushing_face:)

[Edit]
Noch schwerer wird es wenn mein bei Google nach "Arduino Dokumentation" sucht.
[/Edit]

muss man immer gleich so negativ Antworten & so herabstufend ...
jeder hat mal klein angefangen !!!

Trotzdem Danke

Aua....
Jetzt werden schon die Helfer dafür bestraft/verurteilt, weil du nicht auf die Idee kommst die Doku zu suchen, Google zu nutzen?

Ich verstehe, dass dir das arg peinlich ist.
Aber das sind dennoch deine Empfindungen.
Empfindungen die in dir entstehen.
Du alleine bist dafür verantwortlich.

Die Arduino Referenz ist keineswegs erschöpfend, C++ kann noch viel mehr. Ich schaue gerne nach cplusplus, beispielsweise für snprintf. Das ist kein Arduino-Lehrbuch, also die Beispiele muß man sich auf Arduino umstricken und manche Sachen sind in der Arduino-Umgebung nicht "eingeschaltet", weil sie zu viel Speicher benötigen oder was weiß ich. Ich nutze es dennoch zum Nachschlagen.

Suche Dir selbst die Quelle Deiner Inspiration :slightly_smiling_face:

Wobei die von dir aufgeführte Funktion keine C++ spezifische ist. Sie war schon Bestandteil der C89 libc Standardbibliothek also C. Auch wenn sie in der C++ Dokumentation aufgeführt wird.

Da ein großer Teil der Arduino Welt in C++ abgefasst ist, und auch *.ino zu *.cpp gewandelt werden, ist es schon sinnbehaftet auch in die C++ Doku zu schauen, wenn man denn diese Sprache verwenden will.

Und es ist wahr, dass die Libc quasi vollumfänglich für C++ zur Verfügung steht.
Aber es gibt dennoch in der Libstdc++ einige Anpassungen/Transformationen dieser Elemente.

Klarer:
Verwende ich C, dann schaue ich auch in die C Doku!
Bei C++ natürlich zuerst in die C++ Doku.

Und dieses Trotz, oder gerade wegen, der Unterschiede/Gemeinsamkeiten der beiden Sprachen.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.