Show Posts
Pages: 1 ... 15 16 [17] 18 19 ... 24
241  International / Deutsch / Re: Display zeigt komische zeichen an nachdem das Relay die Pumpe eingeschaltet hat on: April 06, 2012, 07:29:48 am
Hallo,
das Problem hab ich hier auch schon mal angesprochen und ich hab es nicht in den Griff bekommen.
Ich habe eine Heizungssteuerung, eine Füllstandssteuerung für einen Wassertank und eine Beleuchtungssteuerung gebaut.
Bei allen dreien hab ich das Problem nicht in den Griff bekommen.
Es stört sowohl wenn Relais schalten als auch wenn man Neonröhren in Betrieb nimmt.
Der Arduino stürzt (glücklicherweise) nicht ab, aber bei allen dreien das Display.
Einen Tipp hab ich allerdings, setzt das "lcd.begin(LCD_WIDTH, LCD_HEIGHT,1)"
welches normalerweise in der Void setup steht entweder in die Void loop oder an die Stelle, an der das LCD-Display
angesprochen wird.
Damit gibst du dann jedesmal einen "Reset" auf das Display.
Beseitigt den Fehler zwar nicht, aber die Auswirkung. :-))
Gruß
Bernward
242  International / Deutsch / Re: Zeitschaltuhr on: March 29, 2012, 03:55:23 am
Hallo Andreas,
wie mein Vorgänger schon schreibt, etwas mehr Infos über die Hardware braucht man schon.
Ich habe so was ähnliches für meine Vögel gebaut. Die sollen mindestens 12 Stunden pro Tag Licht haben.
Wird es früher dunkel wird beleuchtet. Und anschließend wird dann noch eine Notbeleuchtung gedimmt, damit alle
ihren Platz finden.
Klingt ähnlich, sollte also kein Problem sein, dir Tipps zu geben.
Deshalb auch die Frage, hast du ein Uhrmodul oder aber soll anders gesteuert werden.
Gruß
Bernward
243  International / Deutsch / Re: dimmbares LED Treppenlicht (14 LEDs / 12 Volt) .. welche Bauteile sind sinnvoll? on: March 20, 2012, 12:51:36 am
Hallo,
ich bin ja auch dabei, aber das mit den Potis werde ich nicht machen. Ich glaube da ist der Hardware-Aufwand zu groß.
Wenn man einmal die Geschwindigkeiten und die Einschaltdauer softwaremäßig eingestellt hat ist es eigentlich ok.
Und wenn es mir doch nicht gefällt programmier ich es halt um.
244  International / Deutsch / Re: Arduino Mega: Wie genau sind Zyklen möglich? on: March 16, 2012, 04:51:11 am
@sth77
wenn ich es richtig verstanden habe soll der Mega keine Zyklusdaten verarbeiten, sondern der Mega soll die
Daten in entsprechender Genauigkeit bereitstellen, also z.B. alle 2sec ein Signal für 1ms bereitstellen.
245  International / Deutsch / Re: Brauche Hilfe beim Countdowntimer ohne delay. on: March 14, 2012, 12:20:45 pm
Hallo,
also am Anfang wird die variable start auf den aktuellen Wert von millis() gesetzt.
Bei jedem Durchlauf der Schleife (dauert ein paar Millisekunden) wird dann kontrolliert, ob die vergangene Zeit
(millis()-start) noch kleiner als die Blinkzeit ist. Falls ja bleibt alles wie es ist, falls nicht wird zwischen LED an und aus gewechselt.
Schwer zu beschreiben aber die Abfrage ist zuständig für das blinken (Wechsel zwischen LED an und LED aus).
246  International / Deutsch / Re: Brauche Hilfe beim Countdowntimer ohne delay. on: March 13, 2012, 07:46:34 am
Hallo Mischa,
wenn die LED erst bei 7 anfängt, dann liegt es vermutlich an der Abfrage.
Zuerst wird ja gefragt < 6, du solltest dann in deiner Abfrage schreiben
if(aktuell >= 6) oder aber if(aktuell >5) das dürfte schon reichen.

Die Zeile if (millis() - start < (6 - aktuell) * 100) liefert eigentlich nur die Blinkfrequenz der LED
Wenn das Programm startet ist aktuell 0 , also brennt die LED 6*100ms und dann 6*100ms nicht.
Dann wird aktuell immer eins größer, dem entsprechend wird die Blinkzeit 500ms, 400ms, 300ms, 200ms, 100ms.
Gruß
Bernward
247  International / Deutsch / Re: Brauche Hilfe beim Countdowntimer ohne delay. on: March 07, 2012, 01:26:42 pm
Freut mich, das ich helfen konnte.
gruß
Bernward
248  International / Deutsch / Re: Einsteiger braucht Programmierhilfe on: March 07, 2012, 10:59:43 am
@keraino ne war kein Test, kommt durch das viele Copy & Paste wenn man nicht alles schreiben will,
aber so lernt man ja auch :-)))))
249  International / Deutsch / Re: Einsteiger braucht Programmierhilfe on: March 07, 2012, 06:19:11 am
Hallo keraino,
es ist kein wirkliches Problem, wenn die Loop unterbrochen wird, ist allerdings nicht bester Programmierstil,
aber da sind wir ja noch nicht, verbessern kann man immer.
Das mit dem delay(100) würde ich erst einmal so lassen.
Aber hier mal ein Tipp, wie man das Programm übersichtlicher machen kann.
Wenn man 8 mal das gleiche macht, sollte man Felder deklarieren, dann wird alles übersichtlicher.
Was in deiner Schleife die Relais 1 bis 8 machen geht auch so:
wobei ich jetzt nicht drauf geachtet habe, ob alle Ports richtig sind.
Und i<8 weil Felder immer ab 0 gezählt werden, d.h. Relais[0] ist das erste Relais u.s.w.
:-) sieht doch besser aus, oder :-)
Code:
#define LedA 12
int Taster[]= {2,3,4,5,6,7,8,9,10};
int Relais[] = {22,23,24,25,26,27,28,29};

long start;
boolean Letzter[8], Aktuell[8], onoff[8];
int i;
//---------------------------------------------------------------------------------
void setup(){
 pinMode(LedA, OUTPUT);
 for (int i = 0; i < 8; i++){
   pinMode(Taster[i],OUTPUT);
   pinMode(Relais[i],OUTPUT);
 }
}
//---------------------------Handsteurungsteil
void loop(){
for (i==0;i<8;i++){
  Letzter[i] = Aktuell[i];
 if (digitalRead(Taster[i]) == HIGH ) Aktuell[i] = true; else Aktuell[i] = false; //auslesen des Tasters
  delay(100);
  if(!Letzter[i]&& Aktuell[i]){ // reagiert auf Tasterwechsel von nicht gedrückt auf gedrückt
   if (onoff[i])
     digitalWrite(Relais[i],LOW);
    else  
     digitalWrite(Relais[i],HIGH);
  onoff[i] = !onoff[i];
 }
}
}
 
250  International / Deutsch / Re: Einsteiger braucht Programmierhilfe on: March 06, 2012, 05:33:35 am
den manuellen Teil erweitern sollte ja kein Problem sein,einfach mehr Taster, Relais und Variablen.
Probleme sehe ich Moment beim Automatik-Teil. Der muss komplett anders aufgesetzt werden, da ja
wie schon gesagt in der Automatik-Schleife das eigentliche "Void..loop" unterbrochen wird. 
251  International / Deutsch / Re: Einsteiger braucht Programmierhilfe on: March 06, 2012, 04:56:17 am
Oje, das ist aber viel auf einmal, da muss man aber schon einiges an Zeit investieren.
Ganz schön sportlich für einen Anfänger.
252  International / Deutsch / Re: Einsteiger braucht Programmierhilfe on: March 06, 2012, 02:33:06 am
Hallo,
also Erweiterung bedarf schon noch einiger Infos, das ist nicht ganz so einfach. Ich hab ja geschrieben, das der Sketch so funktioniert,
ABER durch die "while" Schleife hängt sich das Programm ja für 30 Sek in der Prozedur "Automatik" auf.
In dieser Zeit sind keine weiteren Tastereingaben möglich. Wenn du mehrere Taster parallel betreiben willst, die verschiedene Relais
schalten sollen, dann wird es komplizierter. Soll das so sein? Da bedarf es noch näherer Infos.
Gruß
Bernward
253  International / Deutsch / Re: Brauche Hilfe beim Countdowntimer ohne delay. on: March 06, 2012, 02:15:09 am
Hallo Mischa,
so ich habs noch mal überarbeitet. Damit es hier nicht zu lang wird hab ich den Sketch jetzt unter Post #8
einfach ausgetauscht Ich habe eine Variable "intervall" eingefügt, da kannst du nach Belieben jetzt die Gesamtzeit
eintragen, nach der sich der Rhythmus wiederholt, ich hab mal 240 Sek vorbesetzt.
Gruß
Bernward
254  International / Deutsch / Re: Brauche Hilfe beim Countdowntimer ohne delay. on: March 05, 2012, 01:33:04 pm
Hallo Mischa,
das kriegen wir auch noch hin :-)
Heute Abend hab ich aber keine Zeit mehr, ich nehm mir das ganze morgen früh noch mal vor.

Und wie gesagt, wenn was unklar ist fragen, nur so lernt man es, ging mir am Anfang nicht anders.

Gruß
Bernward
255  International / Deutsch / Re: Brauche Hilfe beim Countdowntimer ohne delay. on: March 05, 2012, 02:00:25 am
Hallo Mischa,
ich geh mal davon aus, das die Prozedur aus deinem ersten Beitrag zur Ausgabe auf dem Display richtig ist,
dann sollte es so gehen:
Falls nicht, oder bei Unklarheiten zum Code  einfach fragen, dafür gibt es das Forum :-))
Gruß
Bernward


Code:
#define LedA 5
#define LedB 2
#define LedC 3
#define LedD 4
#define LedBl 1
long startzeit, start;
long aktuell, minute, letzteminute, wiederholung;
long intervall = 240;
boolean flag, onoff;
//--------------------------------------------------------------
void setup(){
 pinMode(LedA, OUTPUT);
 pinMode(LedB, OUTPUT);
 pinMode(LedC, OUTPUT);
 pinMode(LedD, OUTPUT);
 pinMode(LedBl, OUTPUT);
 startzeit = millis(); // setzt die Startzeit
}
//--------------------------------------------------------------
void Display(int n){
 if ( n > 9 ) n = 9;
 if ( n < 0 ) n = 0;
 // The rest from here is basic decimal to binary conversion
  if ( n / 8 == 1 )
   digitalWrite(LedD, HIGH);
  else
   digitalWrite(LedD, LOW);
 n = n % 8;
  if ( n / 4 == 1 )
   digitalWrite(LedC, HIGH);
   else
   digitalWrite(LedC, LOW);
 n = n % 4;
  if ( n / 2 == 1 )
   digitalWrite(LedB, HIGH);
  else
   digitalWrite(LedB, LOW);
 n = n % 2;
  if ( n == 1 )
   digitalWrite(LedA, HIGH);
  else
   digitalWrite(LedA, LOW);
}
//--------------------------------------------------------------
void loop(){
 if (wiederholung < intervall){
  wiederholung =(millis()/1000) - (startzeit/1000);
  aktuell = ((millis()-startzeit)/30000); // alle 30 Sekunden wird aktuell von Null aus um 1 erhöht, also wird alle 30 Sek Blinkfrequenz höher
  minute = 3-(((millis()-startzeit)/60000)); // ergibt den Minutenanteil, der ab Start vergangen ist
  if(minute != letzteminute){
    if (minute >= 0) Display(minute);
   letzteminute = minute; 
  }
  if(aktuell < 6)  {
   if (flag){
    flag = false; start = millis();
   }
   if (millis() - start < (6 - aktuell) * 100){
    if (onoff)
      digitalWrite(LedBl,HIGH);
     else 
      digitalWrite(LedBl,LOW);
    }
    else{
     onoff = !onoff; flag=true;
   }
  }
  else{
   digitalWrite(LedBl,HIGH);
  }
 }
 else{
  wiederholung = 0; startzeit = millis();
 }
}
Pages: 1 ... 15 16 [17] 18 19 ... 24