Show Posts
Pages: 1 ... 31 32 [33] 34 35 ... 43
481  International / Deutsch / Re: Steuerung LED Dimmung für Aqua on: February 08, 2011, 06:37:13 pm
Quote
was passiert hier?
i[loop]+=a[loop];
=> wird aus i=i+a?
das hieße ja im else-fall (a=-1) dass i=0-1 wird??
Wäre ja unlogisch, aber ich finde im netz grad keine definition von +=
(hier steht der leider nicht: http://www.arduino-tutorial.de/2010/06/operatoren/ )

Gruß und danke schon mal

EDIT//
rein logisch müsste das doch bedeuten:
i=i+(1*a)

i+=a ist einfach nur die C typische Abkürzung für i=i+a.
genau so gibt es auch -=, *=, /*, &=, |=, usw.
i++ ist ja auch nur die Kurzform von i=i+1

Übrigens ist Dein Einwand berechtigt, da fehlt noch was:
anstelle
Code:
a[loop]=1;
gehört da ein
Code:
i[loop]=0;
a[loop]=1;

und anstelle von
Code:
a[loop]=-1;
gehört
Code:
i[loop]=255;
a[loop]=-1;
Dann wird beim hochzählen bei 0 und beim runterzählen bei 255 begonnen.
482  International / Deutsch / Re: Steuerung LED Dimmung für Aqua on: February 08, 2011, 04:17:13 am
Arrays machen in diesem Fall sogar sehr viel Sinn und sparen eine menge Code.
Sollte so funktionieren (ungetestet):
Code:
//////////WICHTIGE SETUP-DATEN FÜR REALTIME UHRZEIT//////////////////
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68
byte decToBcd(byte val)
{
  return ( (val/10*16) + (val%10) );
}
byte bcdToDec(byte val)
{
  return ( (val/16*10) + (val%16) );
}
//////////ENDE WICHTIGE DATEN FÜR REALTIME UHRZEIT////////////////


//////////WICHTIGE SETUP-DATEN FÜR LEDs//////////////////
#define MAX_STRIPES 4
byte stripePin[] = {8, 9, 10, 11};
int i[] = {0, 0, 0, 0};
int a[] = {0, 0, 0, 0};
long currmillis[4];
byte intervall[] = {90*60000/256, 120*60000/256, 90*60000/256, 60*60000/256};
byte hourfadein[] = {7, 8, 10, 11};
byte hourfadeout[] = {20, 100, 100, 100};   // if hour=100, stripe doesn't fade out
byte minutefadein[] = {30, 0, 30, 0};
byte minutefadeout[] = {0, 0, 0, 0};
//////////ENDE WICHTIGE SETUP-DATEN FÜR LEDs//////////////////



//////////FUNKTION FÜR UHRZEIT//////////////////
void setDateDs1307(byte second,        // 0-59
                   byte minute,        // 0-59
                   byte hour,          // 1-23
                   byte dayOfWeek,     // 1-7
                   byte dayOfMonth,    // 1-28/29/30/31
                   byte month,         // 1-12
                   byte year)          // 0-99
{
   Wire.beginTransmission(DS1307_I2C_ADDRESS);
   Wire.send(0);
   Wire.send(decToBcd(second));    // 0 to bit 7 starts the clock
   Wire.send(decToBcd(minute));
   Wire.send(decToBcd(hour));      // If you want 12 hour am/pm you need to set
                                   // bit 6 (also need to change readDateDs1307)
   Wire.send(decToBcd(dayOfWeek));
   Wire.send(decToBcd(dayOfMonth));
   Wire.send(decToBcd(month));
   Wire.send(decToBcd(year));
   Wire.endTransmission();
}
void getDateDs1307(byte *second,
          byte *minute,
          byte *hour,
          byte *dayOfWeek,
          byte *dayOfMonth,
          byte *month,
          byte *year)
{
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.send(0);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

  *second     = bcdToDec(Wire.receive() & 0x7f);
  *minute     = bcdToDec(Wire.receive());
  *hour       = bcdToDec(Wire.receive() & 0x3f);  // Need to change this if 12 hour am/pm
  *dayOfWeek  = bcdToDec(Wire.receive());
  *dayOfMonth = bcdToDec(Wire.receive());
  *month      = bcdToDec(Wire.receive());
  *year       = bcdToDec(Wire.receive());
}
//////////ENDE FUNKTION FÜR UHRZEIT//////////////////


void setup()
{
  /////////////UHRZEIT////////////////// ZUM UHRZEIT STELLEN EINTRAGEN UND SETDATE FÜR UPLOAD AKTIVIEREN//////
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  Wire.begin();
 Serial.begin(9600);
//    minute = 46;
//    hour = 23;
//    dayOfWeek = 6;
//    dayOfMonth = 5;
//    month = 2;
//    year = 10;
//    setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
  //////////////UHRZEIT ENDE//////////////

   /////////////LEDs//////////////////
   pinMode(stripePin[0], OUTPUT);
   digitalWrite(stripePin[0], LOW);
   pinMode(stripePin[1], OUTPUT);
   digitalWrite(stripePin[1], LOW);
   pinMode(stripePin[2], OUTPUT);
   digitalWrite(stripePin[2], LOW);
   pinMode(stripePin[3], OUTPUT);
   digitalWrite(stripePin[3], LOW);

   /////////////ENDE LEDs//////////////////
}

void loop()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;


  for (int loop=0; loop<MAX_STRIPES; loop++) {
            if (minute == minutefadein[loop] && hour == hourfadein[loop] && second == 0) {
                      currmillis[loop]=millis();
                      a[loop]=1;
            }
            else if (minute == minutefadeout[loop] && hour == hourfadeout[loop] && second == 0) {
                      currmillis[loop]=millis();
                      a[loop]=-1;
            }
            if (a[loop]!=0 && millis() - currmillis[loop] > intervall[loop]) {
                      currmillis[loop] = millis();
                      i[loop]+=a[loop];
                      switch(i[loop]) {
                          case 0:
                              digitalWrite(stripePin[loop], LOW);
                              a[loop]=0;
                              break;
                          case 255:
                              digitalWrite(stripePin[loop], HIGH);
                              a[loop]=0;
                              break;
                          default:
                              analogWrite(stripePin[loop], i[loop]);
                      }
            }
  }


//Ausgabe Uhrzeit//
  getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
  Serial.print(hour, DEC);
  Serial.print(":");
  Serial.print(minute, DEC);
  Serial.print(":");
  Serial.print(second, DEC);
  Serial.print("  ");
  Serial.print(month, DEC);
  Serial.print("/");
  Serial.print(dayOfMonth, DEC);
  Serial.print("/");
  Serial.print(year, DEC);
  Serial.print("  Day_of_week:");
  Serial.println(dayOfWeek, DEC);
  delay(1000);
 }
483  International / Deutsch / Re: Steuerung LED Dimmung für Aqua on: February 08, 2011, 02:20:28 am
Ja:
Code:
int i=0;
int a=0;

...

//LED Stripe 1 - Blau//
  if (minute == 30 && hour == 7 && second == 00) {
            bluemillis=millis();
            a=1;
            intervalli = 90*60000/256;
  }
  else if (minute == 00 && hour == 20 && second == 00) {
            bluemillis=millis();
            a=-1;
            intervallii = 90*60000/256;
  }
  if (a!=0 && millis() - bluemillis > intervalli) {
            bluemillis = millis();
            i+=a;
            switch(i) {
                case 0:
                    digitalWrite(stripePin[0], LOW);
                    a=0;
                    break;
                case 255:
                    digitalWrite(stripePin[0], HIGH);
                    a=0;
                    break;
                default:
                    analogWrite(stripePin[0], i);
            }
  }
484  International / Deutsch / Re: LED blinkt nicht + Frage zu einfachem Sketch on: February 07, 2011, 01:20:25 pm
Wenn Du eine Funktion mit Parameter definierst, dann musst Du beim Aufruf auch einen angeben.

Code:
int setCount(int count) {
Definition ist mit Parameter.
Code:
count = setCount ();
Aufgerufen hast Du sie ohne.
485  International / Deutsch / Re: Programm für pc tastatur am arduino on: February 07, 2011, 02:41:32 am
Im Playground gibts da unter "Input" einige Links dazu.
http://arduino.cc/playground/Main/InterfacingWithHardware#Input
und dann bis "Keyboard" runterscrollen.
486  International / Deutsch / Re: oT: Uhrzeit im Forum (unangemeldet) on: February 03, 2011, 08:33:19 am
Angemeldet gehts via Profile | Look and Layout Preferences | Time Format <- "%d.%m.%y %H:%M:%S"
Und direkt darunter lässt sich der Timeoffset einstellen, ist also alles da was man braucht.
Unangemeldet sehe ich eh nicht, welche Postings neu sind und was ich schon gelesen habe. Da ist dann die korrekte Uhrzeit auch schon wurscht.  smiley-lol
487  International / Deutsch / Re: Überprüfen ob Zahl ganzzahlig teilbar ist? on: February 01, 2011, 09:10:08 am
In Deiner ursprünglichen Frage ging es aber nur um die Unterscheidung zwischen geraden und ungeraden Zahlen. Und da reicht % 2.
488  International / Deutsch / Re: time - unsigned long on: January 27, 2011, 04:30:27 pm
Es ist beides richtig. Nach knapp 50 Tagen geschieht ein Überlauf und damit geht es wieder bei 0 los.
Ob das problematisch ist hängt von Deinem Verwendungszweck ab.
489  Forum 2005-2010 (read only) / Syntax & Programs / Re: Including several project files? on: September 13, 2009, 03:42:48 pm
Give your files the .pde extension and put it in your project directory. The Arduino IDE load all .pde files automatically.
490  Forum 2005-2010 (read only) / Deutsch / Re: alles Gute altes Forum on: January 24, 2011, 02:02:53 am
Quote
Hatte mich schon an die Simplizität dieses Forums gewöhnt. Mal sehen ob alles sauber migriert wird  Good luck!
Es werden nur die Userprofile übernommen, der Forumsinhalt nicht.
491  Forum 2005-2010 (read only) / Deutsch / Re: Wartezeit in einer FOR()-Schleife ohne delay() on: January 22, 2011, 07:30:30 am
Sollte kein Problem bereiten.
previousMillis muss halt innerhalb eines Überlaufs mindestens einmal neu gesetzt werden.
492  Forum 2005-2010 (read only) / Deutsch / Re: Wartezeit in einer FOR()-Schleife ohne delay() on: January 21, 2011, 03:21:43 am
Wenn Du damit den Code aus Reply #7 meinst: der ist allerdings etwas ... ääääh ... merkwürdig. :o
Aber Uwe hat ja dazugeschrieben, dass er den Code überhaupt nicht ausprobiert hat.

Das funktioniert schon so wie ichs geschrieben habe, durch das unsigned spielt der Überlauf keine Rolle.
Einzige Voraussetzung: previousMillis muss mindestens einmal zwischen zwei Überläufen neu gesetzt werden.
Aber das sollte ja kein Problem sein.
493  Forum 2005-2010 (read only) / Deutsch / Re: Wartezeit in einer FOR()-Schleife ohne delay() on: January 19, 2011, 09:58:53 am
Code:
vergangeneZeit = millis() - previousMillis;
WICHTIG: Variablen als unsigned long deklarieren.
Überlauf spielt dann keine Rolle.
494  Forum 2005-2010 (read only) / Deutsch / Re: Grundsätzliches Problem... on: January 22, 2011, 07:43:40 am
Da hast Du natürlich recht. Aber gerade für Programmier-"Amateure" wären vielleicht ein paar optische Hilfen nicht schlecht.
Wenn ich meine Anfangszeit (ist inzwischen über 25 Jahre her) mit den aktuellen IDEs vergleiche: so einige der aktuellen Hilfsmittel hätten mir mit Sicherheit den Einstieg erleichtert.
495  Forum 2005-2010 (read only) / Deutsch / Re: Grundsätzliches Problem... on: January 22, 2011, 07:27:36 am
Da muss ich Udo beipflichten. Wenn man die anderen gängigen IDEs gewohnt ist, bietet die Arduino Umgebung sehr wenig. Aber einen Fehler irgendeiner Art hat sie mir bisher noch nie produziert.
Pages: 1 ... 31 32 [33] 34 35 ... 43