Show Posts
Pages: 1 ... 15 16 [17] 18 19 ... 24
241  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
242  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();
 }
}
243  International / Deutsch / Re: Brauche Hilfe beim Countdowntimer ohne delay. on: March 04, 2012, 06:20:24 am
Hallo Mischa,
ich kenne die 7-Segment Anzeige nicht. Wenn ichs richtig verstehe zeigt dein erster Sketch Zahlen zwischen
1 und 9 auf der Anzeige????? Richtig??
Wenn ja was soll er jetzt bei den 3 Min machen? Was genau soll angezeigt werden, das versteh ich noch nicht.
Gruß
Bernward
244  International / Deutsch / Re: Encoder-Funktion erweitern um +100 / -100 on: March 04, 2012, 05:37:29 am
So ganz klar ist es mir nicht.
Aber ich denke eine zusätzliche Variable einfügen.
In der kann man dann beide Werte addieren?

245  International / Deutsch / Re: pwm mit millis() irgendwie hört er irgendwann auf. on: March 04, 2012, 05:24:29 am
Hallo Chris,
ich hab den Code jetzt so mal über einen Arduino Uno laufen lassen.
Bei mir läuft er aber jedesmal bis pwm1 und pwm2 = 255 hoch und die LEDs leuchten auch.
Hab die Werte über Serial.print ausgeben lassen und laufen immer bis 255.
Hb das "if(digitalRead(4)) //wenn Eingang Zeitschaltuhr HIGH" einfach durch ein delay(100) ersetzt um
simulieren zu können, aber wie gesagt läuft problemlos.
Eine Frage aber noch wofür hast du die Abfrage mit dem start1==0 ???
die wird ja nur einmal durchlaufen und eigentlich gar nicht gebraucht, geht auch ohne.
gruß
Bernward
246  International / Deutsch / Re: Einsteiger braucht Programmierhilfe on: March 02, 2012, 07:56:40 am
hallo,
ich glaube das war so eines:
http://www.ebay.de/itm/2-Kanal-5V-Relay-Relais-Module-Modul-Arduino-ARM-MSP430-8051-AVR-/200718454506?pt=Elektromechanische_Bauelemente&hash=item2ebbc08eea#ht_3710wt_1139

aber trotz dreier Kontakte war das Relais ein Schließer und hatte keinen Umschaltkontakt.
Und der war stromlos geschlossen und das steht nicht in der Beschreibung.
247  International / Deutsch / Re: Einsteiger braucht Programmierhilfe on: March 02, 2012, 07:20:06 am
noch was zu deiner Relaiskarte, so eine hatte ich auch mal.
Ich finde die äußerst "blöd", wie kann man eine Relaiskarte bauen, die ständig unter Strom steht,
alle Pins müssen immer auf "HIGH" sein und sind auf "LOW", wenn das Relais anzieht.
Vielleicht kann mir ja einer erklären, warum das so gemacht wird, ich versteh es nicht.
248  International / Deutsch / Re: Einsteiger braucht Programmierhilfe on: March 02, 2012, 06:25:36 am
als erstes ist eine geschweifte Klammer "falsch herum"
{
 Letzter = Aktuell;

und dann mußt dufür jeden Taster die Variablen deklarieren,
(start1, start2,letzter1..., aktueller1...onoff1....)
dann sollte es gehen.
249  International / Deutsch / Re: Einsteiger braucht Programmierhilfe on: March 02, 2012, 06:18:30 am
Das zweite kannst du auf die schnelle mal so testen:
Ist allerdings nicht die "feine englische Art" da das Programm für 30 Sek in eine Prozedur springt.
Code:

#define Taster 3
#define Relais2 5  
#define Relais3 6  

long start;

//---------------------------------------------------------------------------------
void setup(){
 pinMode(Taster, INPUT);
 pinMode(Relais2, OUTPUT);
 pinMode(Relais3, OUTPUT);
}
//---------------------------------------------------------------------------------
void automatik(){
 start=millis();
 while ((millis()-start) < 30000){
  digitalWrite(Relais2,HIGH);
  if (((millis()-start) > 5000) && ((millis()-start)) < 15000)
    digitalWrite(Relais3,HIGH);
   else
    digitalWrite(Relais3,LOW);
 }
 digitalWrite(Relais2,LOW);
}
//---------------------------------------------------------------------------------
void loop(){
 if (digitalRead(Taster) == HIGH ) {
  delay(100);
 automatik();
}
}
250  International / Deutsch / Re: Einsteiger braucht Programmierhilfe on: March 02, 2012, 05:56:21 am
beim zweiten könnte ich dir auch helfen wenn ichs denn verstehe.
Ein Taster für 2 Relais, welche zeitversetzt an und ausgeschaltet werden sollen?
251  International / Deutsch / Re: Einsteiger braucht Programmierhilfe on: March 02, 2012, 05:15:45 am
wie schon die Vorgänger geschrieben haben must du dich mit entprellen beschäftigen.
Für den Anfang geht es so, das delay(100) ist im Moment für das Entprellen da, aber so kannst du das mal testen:
Code:
#define Taster 3
#define Relais1 4  
boolean Letzter, Aktuell, onoff;
//---------------------------------------------------------------------------------
void setup(){
 pinMode(Taster, INPUT);
 pinMode(Relais1, OUTPUT);
}

//---------------------------------------------------------------------------------
void loop(){
 Letzter = Aktuell;
 if (digitalRead(Taster) == HIGH ) Aktuell = true; else Aktuell = false; //auslesen des Tasters
  delay(100);
  if(!Letzter && Aktuell){ // reagiert auf Tasterwechsel von nicht gedrückt auf gedrückt
   if (onoff)
     digitalWrite(Relais1,HIGH);
    else  
     digitalWrite(Relais1,LOW);
  onoff = !onoff;
 }
}
252  International / Deutsch / Re: Brauche Hilfe beim Countdowntimer ohne delay. on: March 01, 2012, 10:12:39 am
so habs noch mal überarbeitet und getestet, jetzt funktioniert es

Code:

long startzeit, start;
int aktuell;
boolean flag, onoff;
#define LedA 8
void setup(){
 Serial.begin(9600);
  pinMode(LedA, OUTPUT);
  startzeit=millis(); // setzt die Startzeit
}
void loop(){
 aktuell = ((millis()-startzeit)/30000); // alle 30 Sekunden wird aktuell von Null aus um 1 erhöht, also wird alle 30 Sek Blinkfrequenz höher
 if(aktuell < 6)  {
   if (flag){
    flag=false;start=millis();
   }
   if (millis()-start < (6-aktuell)*100){
    if (onoff)
      digitalWrite(LedA,HIGH);
     else 
      digitalWrite(LedA,LOW);
   }
   else{
    onoff = !onoff; flag=true;
  }
 }
 else
 digitalWrite(LedA,HIGH);
}
}
253  International / Deutsch / Re: Brauche Hilfe beim Countdowntimer ohne delay. on: March 01, 2012, 08:45:20 am
zur Erläuterung mit startzeit wird die Zeit gesetzt wenn du startest
über aktuell berechne ich eine Variable, die alle 30 Sek eins höher wird.
Bei 180 Sek von 0 bis 6
in der Schleife berechnet man einen Wert (6-aktuell)*100),
heißt am Anfang 600millisec, bis zum Schluß 100millisec, so lange brennt die LED

Das ist jetzt auf die Schnelle, ob ich richtig gedacht weiß ich nicht, werde ich heute abend mal testen.
gruß
254  International / Deutsch / Re: Brauche Hilfe beim Countdowntimer ohne delay. on: March 01, 2012, 08:41:05 am
Hallo,
hab mir gerade mal ein paar Gedanken gemacht, aber ohne Gewähr, nicht getestet:
so könntest du die blaue LED ansprechen:
hab den Code entfernt, unter der läuft
255  International / Deutsch / Re: Kurze Frage bezüglich des digitalWrite & pinMode Befehls on: February 29, 2012, 06:02:33 am
dann z.B. so:
Code:
for (int i = 1; i < 4; i++){
   pinMode(i,OUTPUT);
   digitalWrite(i, HIGH);
 }
  }

gruß
Pages: 1 ... 15 16 [17] 18 19 ... 24