Show Posts
Pages: [1] 2 3 ... 9
1  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
2  International / Deutsch / LCD 14x2 Große Zahl, zb.: 4 -> über 2 Zeilen anzeigen on: April 10, 2014, 06:32:52 am
Hi , ich möchte gern auf einem 14x2 LCD Display große Zahlen anzeigen.  smiley-grin   Die Zahl sollte aus den beiden Zeilen erstellt werden, so das sie eine ganze ergibt. Geht das überhaupt?
 Das LCD wird über i2c angesteuert.  Arduino UNO

MfG  Marco
3  International / Deutsch / Re: Drehzahlmesser auslesen Motorrad on: April 05, 2014, 02:27:28 pm
Hallo, erstmal ganz großes DANKE  smiley-grin smiley-grin  , damit hast du mir schon mal sehr weiter geholfen. Also ein Schaltblitz ist eigentlich nichts weiter, als eine LED die bei einer bestimmten Drehzahl "Blitzt" und damit sagt, einen Gang höher schalten. Meine Idee dabei ist, es mit der Motortemperatur zu koppeln und so den Motor etwas schonender warm zufahren. Also Motor kalt-> früher schalten, Motor warm -> später Schalten.

Welchen Transistor sollte ich verwenden?

MfG  Marco
4  International / Deutsch / Re: Drehzahlmesser auslesen Motorrad on: April 05, 2014, 06:05:15 am
Hallo, geschaltet wird es über Masse, also eine Schaltwalze schliesst gegen Masse (12V) Ich würde für jeden Gang einen Optokopler verwenden wollen und so die spitzen ausgleichen. Jeder Gang bekommt seinen eigen Eingang beim Arduino und über schieberegister wird dann 7-Seg.Anzeige und LED + Schaltblitz angesteuert. Es wird vielleicht ein Atmega 8 (standalone) mit eigener Stromversorgung(Spannungsregler) Wie gesagt, es ist in Planung, also noch nichts entgültig fertig.

MfG  Marco
5  International / Deutsch / Re: Komme im Code nicht weiter - 2 Funktionen beeinflussen sich on: April 05, 2014, 05:59:22 am
Hallo, so in etwa habe ich es mir vorgestellt.  Wenn ich dich richtig verstanden habe, dann sollte es in etwa so aus sehen:
-Eingabe: wert->digiRead(pin) -wert ist dann 1 oder 0  // wird mit allen Eingängen gemacht
- Verarbeitung : ist wert 1 oder 0  ; hat sich was geändert, dann mache das  //  die Variablen auf Änderungen prüfen
- Verarbeitung:  die Ausgänge ändern  // jetzt die Änderungen der Pins

soweit richtig?
Wie oder wann setzt du jetzt Funktionen? Schreibst du in der loop Eingabe und Verarbeitung und dann neue Funktion mit der Ausgabe?  SO wäre jetzt meine Idee. Vielleicht kannst du einen kleinen psydo Code posten. Danke  smiley-lol

MfG  Marco
6  International / Deutsch / Drehzahlmesser auslesen Motorrad on: April 04, 2014, 03:30:42 pm
Hi, ich möchte ein neues Projekt beginnen und möchte im Vorfeld gern ein paar Sachen geklärt haben.
An mein Motorrad möchte ich ein Schaltblitz bauen, dazu möchte ich das original Kabel vom Drehzahlmesser nutzen. Das Signal ist Digital(zündung) und vermutlich ein rechtecksignal. Im Netz habe ich für mein Model schon so etwas gefunden, nur mit Transitorschaltung( wegen 12V Bord). Ich würde gern einen Optokopler nehmen ( 817 ) und davon aus in den Arduino. Ich würde gern wissen, wie ich die Drehzahl ausrechnen muss, es wird bestimmt nur HIGH und LOW geben. In welchem Zeit abständen wird gemessen und umgerechnet?  Sollte ich einen bestimmten Pin verwenden (Interrupt)?  Ich würde gern bei einer bestimmt Drehzahl eine LED blinken lassen.   Kann mir jemand helfen?  smiley
Das ganze wird mit einem Spannungsregler 78xxx mit 5V versorgt.

MfG  Marco
7  International / Deutsch / Re: Komme im Code nicht weiter - 2 Funktionen beeinflussen sich on: April 03, 2014, 12:04:40 pm
Danke jurs, diese Version hatte ich schon und hat auch funktioniert. Nur kommen jetzt noch Zeitabfragen und intervaldauer mit dazu. Der Boden ist trocken und soll bewässert werden, (Sensor misst) jetzt wird geschaut ob Wasser da und WC-Spülung LOW, dann Pumpe an , Magnetventil Auf. Nach ca. 4s beides wieder LOW und nun soll noch 8s gewartet werden, bevor wieder gemessen wird(Boden muss erst Wasser aufnehmen). Wenn immer noch trocken, dann alles noch mal und wenn 3x gegossen wurde( ohne Erfolg) dann Notabschaltung( darf sich nicht mehr einschalten) Auch wenn kein Wasser da, nicht einschalten. Das ganze muss unterbrochen werden, wenn WC-Spülung HIGH wird ( befüllung des Spülkastens geht vor) Das ganze funktioniert beim Spülkasten ähnlich. Hier ist es wichtig das über den Füllschalter geschaltet wird UND eine feste Zeit nicht überschritten werden darf ( läuft über!) , dann abschalten. Wenn 2x, Notaus! Mein Problem ist das ich in einer Funktion die Pumpe HIGH schalte und danach LOW, aber in der anderen Funktion ich wegen der Zeit die Pumpe nicht auf HIGH setzten kann, weil ich nicht mehr in die Funktion komme (Zeit  noch nicht vorbei? )
Über die Serial-Ausgabe kann ich sehen, das die Sensoren richtig schalten, also HIGH und LOW. Zur Zeit sind alle Magnetv. und Pumpe auf HIGH und können nicht auf LOW gesetzt werden.
Wenn du den ganze Code ansiehst, wird es vielleicht klarer.  smiley

Irgendeine Idee   smiley-confuse


MfG Marco
8  International / Deutsch / Komme im Code nicht weiter - 2 Funktionen beeinflussen sich on: April 02, 2014, 02:08:45 pm
Hallo, ich stecke immer noch fest, in meinen Funktionen. Ich habe nun schon alles hin und her verschoben aber es will nicht funktionieren. Mein Problem ist das ich die Pumpe einschalte und gleichzeitig auch das Magnetventil am Spülkasten öffnen will, das geht , aber es darf dann nicht auch das Magnetventil für den Blumenkasten öffnen. Also es soll immr nur einer von beiden geöffnet sein, wenn die Pumpe AN ist. Mit Vorrang für den Spülkasten! Sollte der Blumenkasten gerade geöffnet sein, dann "abbruch" Ventil ZU und Spülkasten Ventil AUF.  Das ganze wäre so noch irgendwie einfach aber ich möchte mit millis() gewisse Einschaltzeiten und Sicherheitsabschaltungen machen. Die beiden Funktionen werden mit unterschiedlichen Parametern aufgerufen und dann mit unterschiedlichen Zeiten gesteuert. Jetzt geht alles irgendwie durcheinander. Alle werden auf HIGH gesetzt aber nicht wieder auf LOW. Ich fische irgendwie im trüben und mache es nur schlimmer  smiley-cry

Ist es vielleicht besser ich setzte alles in eine Funktion? Oder gibt es eine andere Möglichkeit das ganze in 2 Funktionen zu lassen?
Ich hoffe, das ich es so verständlich geschrieben habe. Der gesamte Code ist im Anhang.

MfG  Marco




Code:
void wcspuelung()  // Steuerung des Spülkasten,  Wasserzulauf
 
  {
  static unsigned long WC_zeit;
 

 
  if (digitalRead(wcSensor) == LOW && (digitalRead(reedSensor) == LOW) )  //Kippschalter == 0  geöffnet / reedkontakt == Low wasser ausreichend
  { 
  digitalWrite(pumpe, HIGH);
  digitalWrite(wcMAG, HIGH);
  WC_zeit = millis();
 
 
 
  if (millis() - WC_zeit > 2000)   // wenn Pumpe und Magnetvetil länger als 2s High sind, dann könnte Fehler sein und beide auf Low setzen
  {
  digitalWrite(pumpe, LOW);
  digitalWrite(wcMAG, LOW);
  }
   }
  //hier kommt noch ein Zähler hin, wenn 3x hinter einander Fehler dann in Notfunktion == Notaus-alle!!!!
  }


 void blumengiesen() //Steuerung für Bewässerung der Blumenkästen, Bodensensor ermittelt Bodenfeuchte,
// wird nur aufgerufen wenn genügend Wasser da, Messung alle 1s und 20x  durchschnitt bilden
 { static int count1, bodensum;
static unsigned long Startzeit_giessen;

if (millis() - zeitletzterMessung4 > 1000)
{
zeitletzterMessung4 = millis();


int boden_add = analogRead(feuchteSensor);   //Feuchte messen und Durchschnitt bilden
bodensum += boden_add;
count1++;

       }
if (count1 >= 20)
{   count1 = 0;
Boden = bodensum / 20;
bodensum = 0;

lcd.setCursor(2, 3);
lcd.print(Boden);
}


if (Boden > (boden_Wert - boden_hysterese)  && millis() - Startzeit_giessen > 8000 )  // Bodenfeucht mit Hysterese und nach 8s, dann giessen
{
if ((digitalRead(reedSensor) == LOW) && (digitalRead(wcSensor) == HIGH))  // Wasser da && Spülkasten voll, dann giessen
 
  { // wenn Spülkasten leer, dann nicht giessen und abbruch
    digitalWrite(pumpe, HIGH);
    digitalWrite(blumeMAG, HIGH);
Startzeit_giessen = millis();
 
     }



if (millis() - Startzeit_giessen > 4000)   // nach 4s abschlten und dann wieder 8s warten damit Erde durchfeuchten kann und dann wieder messen
{

digitalWrite(pumpe,LOW);
digitalWrite(blumeMAG,LOW);
}
}

 }
9  International / Deutsch / Hilfe bei 74hct 164 on: April 02, 2014, 11:27:02 am
Hi, ich möchte dieses Schiebergister verwenden (74hct 164) , weiß aber nicht recht wie. Sonst verwende ich die 74HC 595.  Die Arduino Seite mit ShiftOut habe ich auch gefunden, dort wird mit 3 Kabeln geshiftet. Hier benutzt man doch nur 2 Leitungen.
Wie wird er richtig angeschlossen, also welche Eingänge? Ist er auch skalierbar? Welchen Code muß ich verwenden( lib?) Kann ich für clock und data die Pins frei wählen(beim UNO)?

MfG  Marco

http://www.reichelt.de/ICs-74HCT-DIL/74HCT-164/3/index.html?&ACTION=3&LA=5&ARTICLE=3332&GROUPID=2932&artnr=74HCT+164
10  International / Deutsch / Re: Brown out mit UNO oder MEGA ohne ISP oder mit on: April 01, 2014, 11:13:59 am
Hallo, kann ich die Fuses nicht mit in die Bord.txt schreiben und dann Bootloader brennen? Oder wird dann nur der Bootloader geschrieben und nicht die Fuses aus dem Bord.txt? ist die eFuse == atmega168.bootloader.extended_fuses=0x00

Ich kann mit ISP die Fuses auch so setzen und muss dann nur immer mit ISP Programmieren? Wäre das so richtig?

MfG  Marco
11  International / Deutsch / Brown out mit UNO oder MEGA ohne ISP on: March 30, 2014, 03:55:38 am
Hallo, ich möchte meinen UNO und MEGA (original) Brown out einstellen, weiß aber nicht wie.
 Mit ISP und AVR Burn-O-Mat gehts ohne Probleme aber dabei geht der Bootloader flöten! Ich möchte aber weiterhin über den USB Anschluss uploaden. Muss ich erst die Fuse setzten und dann Bootloader drüber?  smiley-grin

MfG  Marco
12  International / Deutsch / Seriale Ausgabe von mehreren Werten - Kontrolle on: March 25, 2014, 06:49:50 am
Hi, wie kann ich mehrere Werte ( aus dem ganzen Code) in einer Ausgabe zusammenfassen? zB.: mehrere Messwerte oder Sensorwerte. Serial.begin und println ist mir klar und ich kann die Werte auch Anzeigen. Ich möchte meinen Laptop an den UNO anschliessen und über SerialMonitor die Werte auslesen und sie dann hintereinander Ausgeben. ( als Kontrolle, aus verschiedenen Funktionen)
Kennt jemand ein gutes Tutorial( deuscht?) oder kann mir weiter helfen?

MfG  Marco
13  International / Deutsch / wiedereinschalten verzögern millis() ? on: March 25, 2014, 06:42:02 am
Hallo, habe nun folgendes Problem, das ich gern eine Verzögerung möchte, wenn es einmal durchgelaufen ist. Das ganze ist ein Gießautomat, also wenn eine festgelegte Wassermenge gegossen wurde, soll eine feste Zeit gewartet werde, damit der Bodensensor etwas messen kann. Sollte die Wassermenge nicht reichen, dann noch mal giessen. Schön wäre noch ein Zähler, der dann nach zB. 3 Versuchen abbricht ( daran geht es als nächstes!) Soweit funktioniert es, ich habe ein Delay(kommt wieder raus) zum Test eingefügt, um zu sehen, das er auch mal in LOW geht. (Blinken geht, im Test)

Code:
if (Boden > (boden_Wert - boden_hysterese))
{ if (reedSensor_wert == LOW && wcMAG_Wert == LOW)
 
  {
  digitalWrite(pumpe, HIGH);
    digitalWrite(blumeMAG, HIGH);
 
     }
 
  else
{   
digitalWrite(pumpe,LOW);
digitalWrite(blumeMAG,LOW);
}

if (millis() - zeitletzterMessung > 3000)                //hier liegt mein Problme
{
zeitletzterMessung = millis();
digitalWrite(pumpe,LOW);
digitalWrite(blumeMAG,LOW);
delay(1000);  // test , wieder löschen!!!!
}
}
Den gesamten Code habe ich angehängt.

MfG  Marco
14  International / Deutsch / Re: Durchschnitt errechnen funktioniert nicht on: March 23, 2014, 01:29:39 pm
Habe es geändert aber ohne Erfolg. Jetzt gibt der Serialmonitor das aus : 0 , 253, 503, 759, 1014, 0,  usw. bei lichtsum;
lichtWert ist jetzt 253 aber der LDR liefert nur 15 .  Ich hatte angenommen das es einen Durchschnitt von ~ 15 geben sollte?!

Code:
static int count, lichtsum;

lichtsum += analogRead(ldrSensor);
count++;
if (count >= 5)
{   count = 0;
lichtWert = lichtsum/ 5;
lichtsum = 0;
}

MfG Marco
15  International / Deutsch / Durchschnitt errechnen funktioniert nicht on: March 23, 2014, 12:59:47 pm
Hallo, versuche nun verzweifelt den Durchschnitt zu ermitteln aber es will nicht so recht klappen.
Ich habe nun den Code abgeändert und ich bekomme einfach kein vernünftiges Ergebnis.Wenn ich mir den ldrSensor über Serial anzeigen lasse, bekomme ich einen genauen Wert (konstant) aber wenn ich lichtsum mir anzeigen lassen kommen positive und negative Zahlen. Die Funktion soll nur alle paar sekunden aufgerufen werden und dann eine Messung machen und nach x durchläufen den Durchschnitt ermitteln.

Code:
void aussenlicht() // 20 Messungen  duchschnitt bilden und dann Licht AN oder AUS schalten
 {

/*for (int i = 0; i < 20; i++)
{
lichtWert += analogRead(ldrSensor);
}

lichtWert = lichtWert/ 20;
*/

 static int count, lichtsum;

lichtsum += analogRead(ldrSensor);
count++;
if (count >= 5)
{ count = 0;
lichtWert = lichtsum/ 5;
}

Serial.println(lichtsum);
lcd.setCursor(0,2);
lcd.print("  ");
lcd.print(lichtWert);
Die Version mit der for Schleife hat funktioniert.

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