Show Posts
Pages: [1] 2 3 ... 10
1  International / Deutsch / Re: Frage zu Pins für Motortreiberplatine on: July 24, 2014, 08:18:26 am
Versuche es doch mal damit  smiley

http://www.ebay.de/itm/10A-15A-45A-60A-H-bridge-Dual-DC-Motor-Driver-Controller-Strong-braking-MOSFET-/160910347243

Marco
2  International / Deutsch / Re: millis(), bekomme unterschiedliche Zeiten on: July 22, 2014, 06:23:48 am
Hi, ich glaube, das Problem ist gelöst! Es sitzt ca. 50cm vorm Monitor   smiley-confuse
Der Code macht genau das, was er machen soll.
Das Problem ist, das die letzte Zeitspeicherung ca 12h ( jetzt mehr als 1 Minute) her ist und somit ist die if Bedienung immer true und er setzte die Vari. gleich wieder auf Null  -> wie er soll! Nur ist die Leuchtdauer sehr kurz  smiley-lol .
Ich habe es jetzt mit einem counter gelöst, der nach dem Einschalten jede sekunde eins hoch zählt und ich dann mit dem counter schalte.
Kennt jemand eine andere Lösung für das Problem?
Hier die Änderung:
Code:
if (licht_Wert > ( schaltWert + hysterese)) { lichtzustand = 0; abschalt = 1; }   // Tag (hell) Zustandsvari = 0 -> AUS;    erst wenn Licht (Tag) dann Vari. auf 1 setzen

 if (abschalt == 1 && licht_Wert < (schaltWert - hysterese)) { lichtzustand = 1;} // draußen dunkel und Abschaltvari = 1 -> Licht AN
  //Abschaltvari. = 1, verhindert wieder einschalten nach nachtabschaltung

 if (lichtzustand == 1 && (millis() - letzteMillis1 > minute) ) // nach 1 MInute abschalten,
{
letzteMillis1 = millis(); //Zeit merken
//  // Licht AUS
// abschalt = 0; //Abschaltvari. auf 0 setzen
count2++;
}
if(count2 >= 5) { abschalt = 0; count2 = 0; lichtzustand = 0; } //test code!!!!! ZÄHLT ZU SCHNELL!!!!!!!!!

if (lichtzustand == 0) { digitalWrite(licht, LOW);} // Tag -> licht AUS
if (lichtzustand == 1) { digitalWrite(licht, HIGH);  }// Nacht -> Licht AN


im Anhang der ganze Code. ( werden eigentlich auch die anderen . ino angezeigt?


MfG  Marco
3  International / Deutsch / Re: millis(), bekomme unterschiedliche Zeiten on: July 21, 2014, 05:59:56 am
Hi, langsam bekomme ich mehr graue Haare!  smiley-mad
Ich habe nun folgendes Versucht, aber hier wird die Vari bei jedem Durchlauf neu geschrieben.
Code:
if (abschalt == 1 && licht_Wert < (schaltWert - hysterese)) { lichtzustand = 1; letzteMillis1 = millis(); } // draußen dunkel und Abschaltvari = 1 -> Licht AN
   //Abschaltvari. = 1, verhindert wieder einschalten nach nachtabschaltung


if ( (millis() - letzteMillis1) > minute) // nach 1 MInute abschalten,
{
   //Zeit merken
lichtzustand = 0; // Licht AUS
abschalt = 0; //Abschaltvari. auf 0 setzen
letzteMillis1 = millis();
}

An anderer Stelle, bekomme ich sie nur eingeschaltet oder sie bleibt die ganze Zeit AUS.

An einer anderen  Stelle im Code funktioniert es ohne Probleme, warum nur hier nicht?  smiley-confuse
Beispiel:

Code:
if (wc_Wert == 1) // WC ist AUS
{
if ((Boden >= (boden_Wert_1 - boden_hysterese))  && millis() - Startzeit_giessen  > 60000UL && blumen_G == 0 )  // Bodenfeucht mit Hysterese und nach 1 Minute, dann giessen



{ // wenn Spülkasten leer, dann nicht giessen und abbruch
blumen_G = 1; // Zustandsvari. Wasser AN
Startzeit_giessen = millis();

}

}
}

if (millis() - Startzeit_giessen > giessen_abschalten * 2 && blumen_G == 1)   // nach 4 Minuten abschlten und dann wieder 1 minute warten damit Erde durchfeuchten kann und dann wieder messen
{

blumen_G = 0; // Zeit um, Wasser abschalten !!
  Startzeit_giessen = millis();
  blumen_zaehler ++; // Fehlerzähler Einschalten nicht größer 3
}
  }

MfG  Marco
4  International / Deutsch / millis(), bekomme unterschiedliche Zeiten on: July 20, 2014, 01:10:41 pm
Hallo zusammen.
Ich stehe wieder mal vor einem Problem. Ich möchte eine Außenbeleuchtung mit einem LDR Einschalten und nach 1 Minute ( später 2h) wieder ausschalten. Soweit so gut, der Code funktioniert. Aber , die 1.Schaltzeit beträgt 1 MInute aber die anderen nur ca 20 sec.
Die Lampe soll auch nur einmal eingeschaltet werden und dann erst wieder am nächsten Abend. Ich habe nun die letzteMillis schon an verschiedenen orten versuch aber ohne den gewünschten Erfolg.
Die Zeit soll erst nach dem Einschalten zählen.
abschalt und lichtzustand werden zu schnell auf null gesetzt


Code:
void aussenlicht() // 20 Messungen  duchschnitt bilden und dann Licht AN oder AUS schalten
 { // hier kommt noch eine Abschaltung nach 2h hin, die erst am morgen wieder den Wert (Zeit) auf Null setzen soll


static unsigned long letzteMillis; // letzte millis bei Einschaltdauer
const unsigned long Stunde = 60000UL * 60 ;  // Umrechnung in Stunde, Stunde ist gleich 1h
const unsigned long minute = 60000UL;  //  1minute
static unsigned long lichtzeit_1 ; // Zeit für Werte einlesen
static int count, lichtsum;
static  int schaltWert = 35; // Schaltwert LDR
static  int hysterese  = 5;  // Toleranz LDR Wert



if( millis() - lichtzeit_1 > 2000 ) // alle 2 sec eine Messung,
{
lichtzeit_1 = millis();
int ADin = ldr_Wert; // LDR wert speichern
lichtsum += ADin; // aufaddieren
count++; // Zähler +1


if (count == 20) // 20 Messungen erreicht
{   count = 0;
licht_Wert = lichtsum / 20; //durch 20 teilen, speichern
lichtsum = 0; // speicher auf 0 setzen -> wieder 20 Messungen
}
}

if (licht_Wert > ( schaltWert + hysterese)) { lichtzustand = 0;}   // Tag (hell) Zustandsvari = 0 -> AUS

  if (abschalt == 1 && licht_Wert < (schaltWert - hysterese)) { lichtzustand = 1;} // draußen dunkel und Abschaltvari = 1 -> Licht AN
   //Abschaltvari. = 1, verhindert wieder einschalten nach nachtabschaltung
if (lichtzustand == 1) // Licht AN


if (millis() - letzteMillis > minute) // nach 1 MInute abschalten,
{
letzteMillis = millis();  //Zeit merken
lichtzustand = 0; // Licht AUS
abschalt = 0; //Abschaltvari. auf 0 setzen

}

}


if (lichtzustand == 0) // Tag -> licht AUS
{
digitalWrite(licht, LOW);
}

if (lichtzustand == 1) // Nacht -> Licht AN
{
digitalWrite(licht, HIGH);
}

if (licht_Wert > 300) // erst wenn Licht (Tag) dann Vari. auf 1 setzen
{
abschalt = 1;
//letzteMillis = millis();   ??????????????


}

Irgendwie steh ich auf dem Schlauch  smiley-cry     im restlichem Code funktioniert es


MfG  Marco

5  International / Deutsch / Serial.read geht nicht on: July 17, 2014, 09:29:13 am
Hi , ich bin nun am verweifeln. Ich möchte eine Zahl ( 1-8) über serial senden. Leider geht es nicht so recht. Die Vari state1 zeigt immer -1, ist aber unsigned int deklariert.  Ich möchte auch nicht immer Enter drücken müssen, es soll bei drücken der "6" die LED an bzw. wieder aus schalten.   smiley-sad

Code:
if (Serial.available() > 0);
{
state1 = Serial.read();

}
if (state1 == '6')
{
digitalWrite(LED, HIGH);
}
if (state1 == '7')
{
digitalWrite(LED, LOW);
}

MfG  Marco

PS: Sorry ich hatte einen kleinen Tipfehler!  also 6 enter-> LED an, 7->aus
 wie bekomme ich nun hin OHNE Enter drücken?
6  International / Deutsch / Re: String zusammensetzen und Ausgabe auf LCD on: July 17, 2014, 08:58:06 am
Hi, habe nun versucht den String auf´s Display zubekommen aber nur mit Fehlermeldung.
Die #include <avr/pgmspace.h> habe ich. Fehlt noch eine  *.h ? oder was ist der Fehler?


LCD.ino:20: error: initializer fails to determine size of '__c'

Code:
if (blumen_G != alt_blumen_G)
{
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(F(string_5));  // mit ("string_5") geht auch nicht
}

Code:
prog_char string_0[] PROGMEM = "Licht: AN";   // "String 0" etc are strings to store - change to suit.
prog_char string_1[] PROGMEM = "Licht: OK";
prog_char string_2[] PROGMEM = "WC: AN";
prog_char string_3[] PROGMEM = "WC: OK";
prog_char string_4[] PROGMEM = "WC: Störung";
prog_char string_5[] PROGMEM = "Blumen: AN";
prog_char string_6[] PROGMEM = "Blumen: OK";
prog_char string_7[] PROGMEM = "Blumen: Störung";
prog_char string_8[] PROGMEM = "Kühlschrank 12V";
prog_char string_9[] PROGMEM = "Kühlschrank 220V";


// Then set up a table to refer to your strings.

PROGMEM const char *string_table[] =    // change "string_table" name to suit
{
string_0,
string_1,
string_2,
string_3,
string_4,
    string_5,
string_6,
string_7,
string_8,
string_9
};

char buffer[20];    //


MfG  Marco
7  International / Deutsch / Re: String zusammensetzen und Ausgabe auf LCD on: July 15, 2014, 12:16:23 pm
Danke für die schnelle Hilfe  smiley-grin
Eine Frage hätte ich noch, was bedeutet das sternchen bei char* ? Multiplizieren?

MfG   Marco
8  International / Deutsch / String zusammensetzen und Ausgabe auf LCD on: July 15, 2014, 08:50:44 am
Hallo zusammen,ich würde gern einen Text auf dem LCD ausgeben. Genauer gesagt möchte ich ein Wort ( oder mehrer) in einem Array im eeprom speichern und sie nach bedarf zusammen setzen und ausgeben.
z.B.: "Wasser" und "OK" und "Störung" ,  eine Variable bekommt einen Wert und dann soll , je nach Wert,  der Text sich zusammen setzen : "Wasser OK" oder "Wasser Störung".  Ich habe schon PROGMEN mir an gesehen aber so richtig steige ich nicht durch und bei String oder string verstehe ich den Unterschied nicht. Zur Zeit verwende ich noch LCD.print"........." , was ich ändern möchte.
Das LCD wird über i2c gesteuert , von einem Nano.

Danke  smiley-grin

MfG  Marco
9  International / Deutsch / Re: millis(), umrechnen ms in sekunde und dann auswerten on: July 07, 2014, 02:26:53 pm
Hallo,
 DANKE erst mal für die vielen Tipps  smiley-lol . Eigentlich wollte ich nur die Zeitdifferenz in Minuten oder Stunden, damit ich zB 2s schreibe und nicht 2000 ms oder eben für Stunden das gleiche. Es ist keine Schaltuhr, dafür hätte  ich mehrere RTC´s .
Ich schalte das Licht über LDR ein und möchte das es nach 2h wieder aus geht.
Wie gesagt, ich hatte ein variante irgendwo gesehen, bei der der Differenzwert durch 1000 geteilt wurde und dann nur mit sekunde ( millis-letztemillis / 1000 > 2s  , als Beispiel). Eure vorschläge werde ich test, Danke.
Hintergrund ist, das ich diese Variante im Code verwende,  den ein Freund auch nutzt, so das er die Werte eben schneller erkennt unnd ändern kann.
Danke   smiley-grin

MfG  Marco
10  International / Deutsch / millis(), umrechnen ms in sekunde und dann auswerten on: July 06, 2014, 04:38:56 am
Hi, ich möchte die Zeitdifferenz in ms umrechnen in sekunde und dann mit dem Wert vergleichen. Ich hatte es schon irgendwo gelesen, vielleicht hier im Forum oder im Netz aber ich kann es nicht mehr finden.
Bei größeren Zeit Werten, finde ich es übersichtlicher, wenn der Wert in sekunde ist.
Ich möchte eine "Zeitschaltuhr" die nur einmal am Tag (besser Abends) eine Lampe einschatet und diese nach ca 2 Stunden wieder ausschaltet. ( keine zusätzliche Hardware!  ) mehr nicht!
Hier ein kleiner test Code:
letzteMillis ist unsig long

Code:

  if ((millis() - letzteMillis) / 1000 > 2 )  // differenz geteilt durch 1000 (ms -> s ) größer 2s
  {                                           // leider geht es so nicht, wie ist richtig
  digitalWrite(led, HIGH);

  }
 if(millis() - letzteMillis >3000)      // das geht, aber größere Zeit werden dann unübersichtlich zB  2Stunden
{
digitalWrite(led, LOW);
letzteMillis = millis();
}

MfG  Marco
11  International / Deutsch / In AS6 Funktionen aufteilen in mehrere ino Dateien on: June 29, 2014, 11:44:51 am
Hi zusammen, ich brauche wieder mal hilfe. Ich versuche gerade mit AS6 mein Programm zu schreiben aber so recht geht es nicht.
Ich möchte mehrere externe Funktionen, in  neue .ino Datei schreiben, wegen der Übersichtlichkeit und Lesbarkeit.
Der Code hat schon recht gut funktioniert als ich ihn hintereinander geschrieben hatte aber nun  möchte ich die Funktionen aufteilen. Also jede void bekommt eine .ino Datei. Also die ersten beiden stehen direkt hinter der loop und werden aufgerufen, aber bei den anderen kommt der Fehler" aussenlicht' was not declared in this scope". Wo liegt mein Fehler?
Mit Variablen übergabe, weiß ich bescheit. Also in den Klammer die Werte die übergeben werden sollen.
Kann oder muss ich Variablen in der ersten ino Datei fest legen oder geht das auch in der ino bei der Funkton( globale Variablen)

Ich habe gerade bemerkt,das die .ino Dateien keine Zahl als ersten haben dürfen  smiley-confuse

Das Programm hat noch viele Fehler, deswegen möchte ich es aufteilen und es dann Stück für Stück schreiben.
Im Anhang ist der ganze Code.

Wer kann mir helfen, Tipps oder pseudo Code geben? Damit ich die Funktionen Aufteilung besser verstehe.


MfG  Marco

PS:  ich habe die ino schon umbenannt bis auf eine

12  International / Deutsch / PIC Programmer auch für Atmel nutzen ??? on: June 24, 2014, 11:58:49 am
Hi zusammen, ich habe folgenden PIC Programmer ( könnte ich von einem Freund bekommen) und möchte wissen, kann man das Teil umprogrammieren, so das es auch Atmelchips brennen kann?  (oder nur Atmel)
Ich befürchte allerdings, das es nicht geht, weil einfach andere Pins benutzt werden. Liege ich da richtig? Oder kann mir jemand
 helfen?
http://www.ebay.de/itm/PIC-USB-Automatic-Programming-Entwicklung-Microcontroller-Programmer-K150-ICSP-/330868340370?pt=Motoren_Getriebe&hash=item4d094a3692

MfG  Marco
13  International / Deutsch / Array anlegen für 3 Schieberegister on: June 16, 2014, 12:31:37 pm
Hallo zusammen, ich habe nun folgenden Code geschrieben und er funktioniert auch wie er soll. Das ganze soll  eine Steuerung für 18 LED Spots sein. ( 230V mit Relais für je ein Spot)
Ich möchte das LampenPin Array gern in ein 2 dim. Array umwandeln. ( wurde mir hier mal empfohlen  smiley
Damit ich jede einzelne LED auch ansteuern kann.
Leider komme ich damit nicht wirklich weiter. Ich verstehe nicht, wie ich dann shiften muss, damit alle Pins ihre werte bekommen oder wie ich eine bestimmte Anzahl an Pins mit einmal ansteuere oder wie füge ich die Pins zu einem Muster zusammen.
Für einzelne Werte oder ein Lauflicht, bekomme ich hin. ( Aufgabe aus einem Lehrbuch von Bartman) Aber eben nicht für alle 18.
Ich füge mal das Array ein und im Anhang der gesamte Code.   smiley-grin

Code:
   long LampenPin [8] = { 0B000000000000000000000000, // Array_Wert 0  alle aus
                  0B111111111111111111111111, // Array_Wert 1  alle An
          0B000000001111111100000000, // Array_Wert 2 vordere Hälfte AN
  0B000000000000000011111111, // Array_Wert 3 hintere Hälte AN
          0B000000001001001100110011, // Array_Wert 4 lange Seite hinten AN
  0B000000000110110011001100, // Array_Wert 5 lange Seite vorn AN
  0B000000001111100111111001, // Array_Wert 6 AUßenring AN
  0B000000000110011000110110, }; // Array_Wert 7 Innenring AN
 
  //Array für 3 Schieberegister
   
               

   


MfG  Marco
14  International / Deutsch / Re: Tasten für Tastenblock gesucht. finde nicht was ich suche :/ on: April 19, 2014, 07:03:48 am
Hi, das sieht nach einer Tastatur von einer Registrierkasse aus. Suche mal danach.

MfG   Marco
15  International / Deutsch / Re: Wo kann ich LCD Display bestellen? on: April 16, 2014, 01:59:02 pm
Hi, Jambo
 ich habe mir schon 2 Stück bestellt, gesamt kosten ca. 60€.  smiley-confuse
Ich möchte mir einen Emotimo nach bauen und bin auch beim entwerfen der Platine schon recht weit.

MfG  Marco
Pages: [1] 2 3 ... 10