Pages: [1]   Go Down
Author Topic: Problem mit LED-Lauflicht ...  (Read 2135 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

/
Code:
*
  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);
}  
« Last Edit: June 10, 2012, 03:45:54 pm by uwefed » Logged

Germany
Offline Offline
Faraday Member
**
Karma: 59
Posts: 3071
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bevor diese merkwürdige Sache ganz verschwindet:

Sorry, ich hab auch keine Ahnung!

Serial zu verwenden verändert das Verhalten deines Programms: setup braucht länger und mehr Speicher, sowohl RAM als auch PROGMEM

Quote
Das ganze laeuft erst nur dann an...
was bedeutet das ?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 30
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Bob_Snow_Crash,

ich habe deinen Sketch mal bei mir getestet (in Ermangelung der vielen LED nur mit einer) und konnte keine Probleme erkennen - wenn Du "Serial.end();" in der letzten Zeile der Setup Routine meinst.
Weder mit noch ohne dieser Programmzeile ändert sich etwas am Verhalten des Programmes.
Getestet auf Arduino Ethernet mit Arduino 1.01

Grüße

harding
Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 270
Posts: 21866
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich hab den Sketch mit dem IDE 0022 kompiliert und hab keinen Probleme gefunden.

Zum Sketch ist zu sagen, daß er sehr kompliziert geschrieben ist.

Code:
const int ZEIT=250;
byte j=2;
byte increment =1;

void setup()
{
  for (int i=2;i<=9;i++)
  {
  pinMode(i,OUTPUT);
  digitalWrite(i,LOW);
  }
}

void loop()
{
  digitalWrite(j,HIGH);
  delay(ZEIT);
  digitalWrite(j,LOW);
  j+=increment;
  if(j>=9 || j<2)increment*=-1;
 
« Last Edit: June 11, 2012, 03:10:23 pm by uwefed » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hallo uwefed,

danke fuer dein super kleinen sketch. dies hatte noch einen kleinen 'minibug' bei dir.
folgendes: die led's gehen von von rechts nach links und danach von links nach rechts.
ABER (!) wenn die letzte led rechts erreicht wurde dann sind fuer die vorgegebene zeit
ALLE (!) led's kurz aus. ich habe es mal gefixt so dass es jetzt einen superfluessigen
lauf hat. es lag in der 'if'-anweisung. es fehlte nur noch ein gleichheitszeichen mehr nicht.
siehe jetzt vollstaendigen source unten ...

nichtsdestotrotz habe ich bei meinem selbstgebastelten sketch immer noch das problem
mit dem 'Serial.begin()' oder 'Serial.end()'. die zeile muss bei mir im sketch stehen, sonst
laufen die led's nicht an. habe immer noch keine ahnung woran es liegt aber das prob liegt
defintiv bei mir.  

Code:
/*
  LED-Lauflicht mit 8 LED's
*/

const int ZEIT=250;
byte j=2;
byte increment=1;

void setup()
{
  for (int i=2;i<=9;i++)
  {
    pinMode(i,OUTPUT);
    digitalWrite(i,LOW);
  }
}

void loop()
{
  digitalWrite(j,HIGH);
  delay(ZEIT);
  digitalWrite(j,LOW);
  j+=increment;
  if(j>=9 || j<=2) increment*=-1;
}  
« Last Edit: February 09, 2014, 03:24:43 pm by uwefed » Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 270
Posts: 21866
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aus Ermangelung von Zeit hatte ich den Sketch nicht praktisch mit LED ausprobiert. Entschuldige für den Fehler.
Bezüglich des Orginalsketch kann ich nichts sagen, außer daß er mir funktioniert.
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


problem geloest ....

es lag an der arduino ide-version (0022) welche ich auf meiner kiste hatte. ich spielte jetzt gerade
die aktuelle version auf (1.0.1) und siehe da, das problem mit Serial.begin() bzw. Serial.end() iss wech ...

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo
Ich bin absoluter Arduino Neuling, und mochte mich mit 8 Kanal Lauflicht Probieren.
Nun mein vorhaben.

const byte b1=B00000001;
const byte b2=B00000010;
const byte b3=B00000100;
const byte b4=B00001000;
const byte b5=B00010000;
const byte b6=B00100000;
const byte b7=B01000000;
const byte b8=B10000000;

jetzt hätte ich gerne das b1-b8 durchläuft. also die Les´s bei b1 OOOOOOOX und bei b2 OOOOOOOXO und so weiter
aufleuchten ich bin nun schon seit 5h am googeln und komme nicht weiter.

kann mier BITTE BITTE jemand HELFEN.

Logged

Forum Moderator
BZ (I)
Online Online
Brattain Member
*****
Karma: 270
Posts: 21866
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo
Ich bin absoluter Arduino Neuling, und mochte mich mit 8 Kanal Lauflicht Probieren.
Nun mein vorhaben.

const byte b1=B00000001;
const byte b2=B00000010;
const byte b3=B00000100;
const byte b4=B00001000;
const byte b5=B00010000;
const byte b6=B00100000;
const byte b7=B01000000;
const byte b8=B10000000;

jetzt hätte ich gerne das b1-b8 durchläuft. also die Les´s bei b1 OOOOOOOX und bei b2 OOOOOOOXO und so weiter
aufleuchten ich bin nun schon seit 5h am googeln und komme nicht weiter.

kann mier BITTE BITTE jemand HELFEN.

Öffne einen neuen Topic.
Grüße Uwe
Logged

Pages: [1]   Go Up
Jump to: