Arduino und keinen Schimmer

Seiten: 1 | 2 | 3 | 4 | 5 | (6) | 7 | 8 | 9
Zurück zur Startseite

Anse

28.02.13 19:08

Was meinst Du mit A0 und A1? den Analogkomperator oder den Analogdigitalwandler?
In den Registern gibt es ein Bit, mit dem z.B.der ADC eingeschalten wird.

SebiR

28.02.13 19:08

if (analogRead(1) > x) {
bla = analogRead(0);
}

Vielleicht? Oder was meinst du?

zellkern

28.02.13 19:27

Mal weiter ausholen hier...
Hab Spannungsteiler aus 2 LDRs.
Am Analog IN 1 hab ich nen Spannungsteiler aus 10K und ebenfalls nen LDR.
Is ne Einachs Suntrackersteuerung.
Bei Wert 500 wird digital Ausgang 2 angeknipst (Relais Motor nach Osten).
Bei Wert 524 wird Ausgang 4 angeknipst (Relais Motor nach West).
Bei unter..bzw über 512 is Ruhe..keiner macht was.
Der einzelne LDR ist der Dämmerungsschalter.
Wird ein Wert unterschritten,geht 2 auf high. (also Motor fährt nach Osten ).
Soweit,so klar und funktioniert auch super..auch bei Bewölkung,wo man sich schon mit freiem Auge schwer tut,die Sonne ausfindig zu machen.
Das Rückfahren nachts klappt auch.
Bloss manchmal,bei Vollmond folgt der blöde Hund dem Mond.
Heul.
Jetzt wollt ich einfach,wenn es ab nach Osten geht,bei Dunkelheit einfach den Analog IN 0 lahmlegen.
Nur nachts...nur solange eben der Dämmerungs LDR nicht genug Licht erwischt.
Aber vermutlich denk ich mir das schon wieder viel zu einfach aus.

Dennis

28.02.13 19:30

Also wenn wir noch beim Arduino sind, dann meint er mit A0 und A1 die analogen Eingänge des Arduino.
Die sind je nach Model von A0 bis Ax durchnummeriert.

Zur Frage: Ich verstehe das Problem nicht ganz.

Wenn du unter Umständen nichts einlesen willst, dann pack das ganze, wie schon erwähnt in eine If-abfrage.

ein Gegenvorschlag:

if (analogRead(1) > x) {
//nothing happens here...
}else{
bla = analogRead(0);
}




zellkern

28.02.13 19:41

Aber anscheinend gibts wohl keinen solchen disable Befehl um A0 lahmzu legen.
Dann werd ich es wohl mit else machen müssen.
Soll auch recht sein..

Anse

28.02.13 20:55

Aber anscheinend gibts wohl keinen solchen disable Befehl um A0 lahmzu legen.
Die Kanäle A1 bis Ax werden nacheinander abgefragt. Welcher Kanal abgefragt wird, wird vom Register ADMUX bestimmt. Mit dem Register kann sozusagen A0 lahmgelegt werden.
Ich kenn das Arduino nicht wirklich. Wie sieht die Ananlogabfrage im Programm aus? Gibt es auch mal etwas Code zu sehen?


Dennis

28.02.13 21:55

Wieso denn lahmlegen? Einfach Ignorieren!

SebiR

28.02.13 21:57

Anse:
Wie sieht die Ananlogabfrage im Programm aus? Gibt es auch mal etwas Code zu sehen?


Siehe die Snippets oben. Das ist kein Pseudocode

zellkern

28.02.13 22:14

Also,wie gewünscht gibts hier den Lacher des Abends.
Tja,obwohl...für nen Anfängersketch klappt das erstaunlich gut.
Theoretisch könnt ich auch das Zurückfahren nach ost ganz weglassen,weil er sich bei den ersten Morgensonnenstrahlen eh wieder dem hellsten Punkt am Himmel zuwendet.

// Sonnennachführung eine Achse
// pin 2 = Relais Motor nach West drehen
// pin 4 = Relais Motor nach Ost drehen
// Analog 0 = Mittelabgriff Spannungsteiler aus 2 LDRs
// Analog 1 = Mittelabgriff Spannungsteiler LDR + 12K = zurück nach Ost

int west = 2; // Relais West
int ost = 4; // Relais Ost
int pin = A0; // Analogeingang A 0
int abend = A1; // Analogeingang A 1 Abends zurück nach Osten wenn LDR dunkel
int value;

void setup ()
{
pinMode (west, OUTPUT); // definiert west als Ausgang
pinMode (ost, OUTPUT); // definiert ost als Ausgang

}

void loop ()
{
value = analogRead (pin); // liest A0 ein

if (value > 524 ){ // wenn Wert höher als... Motor Richtung west
digitalWrite ( west, HIGH );
digitalWrite ( ost, LOW ); }

value = analogRead (pin); // wenn Wert kleiner als 512 Motor stop
if (value < 512 ){
digitalWrite ( west, LOW ); }

value = analogRead (pin); // liest A0 ein

if (value < 500 ){ // wenn Wert kleiner als ... Motor Richtung ost
digitalWrite ( ost, HIGH );
digitalWrite ( west, LOW ); }

value = analogRead (pin); // wenn Wert grösser als 512 Motor stop
if (value > 512 ){
digitalWrite (ost, LOW ); }


value = analogRead (abend); // liest A1 ein
if (value < 300) { // je höher der Wert,umso früher gehts zurück nach Ost
digitalWrite ( west, LOW );
digitalWrite ( ost, HIGH ); // fährt zurück nach ost
}
}


Der Zeilenübertrag stimmt natürlich hier so nicht.




SebiR

28.02.13 22:18

[.CODE][./CODE]

zellkern

02.03.13 10:24

Sodala..
Nachtrag.

Hab jetzt den untersten Abschnitt ganz nach oben kopiert und lass den Rest als else laufen.
Jetzt klappts.
Muss mich wohl erst noch dran gewöhnen,dass die Reihenfolge im code nichts mit der Priorität der Funktion zu tun haben muss.

Pfff...Knoten im Hirn aber es wird.

Andere Frage:
Hätt in nächster Zeit mal eine kleine Turbinensteuerung zu realisieren.
Dazu werden auf der Welle 2 Magnete befestigt,die von nem induktiven Näherungsschalter erfasst werden.
Der Zulauf zur Düse bekommt nen Kugelhahn mit Aktuator.
Drehzahl zu hoch = Hahn zu
Drehzahl zu klein = Hahn auf
Mit etwas Hysterese versteht sich.
Wie werte ich Impulse pro Minute in nem Programm aus?
Hat jemand nen Tip?
Oder gibts libraries irgendwo?

Lars_Original

02.03.13 10:39

Das Stichwort lautet Frequenzmessung.

Bei kleinen Frequenzen misst man die Zeit zwichen den Impulsen (Periodendauer) und bei größeren Frequenzen zählt man Impulse pro Zeiteinheit. Die Grenze hängt von der Verarbeitungsgeschwindigkeit des Prozessors ab.

Da gabs hier doch erst nen Faden zum Thema Gitarrenstimmgerät.
Das reduziertst du auf eine Frequenz und zusätzlich zur Anzeige steuerst du den Stellantrieb.

Lars

Dennis

04.03.13 02:33

Da ich mir kein Oszi leisten kann, hab ich mir überlegt,
wie ein digitales Oszilloskop funktionieren könnte...



Ich brauch jetzt nur noch ein ordentliches Display und mehr Zeit...

heaterman

04.03.13 03:01

Da gibts fertige pde`s für den Oszi-Betrieb mit dem Display. Ich hab mal vor zwei Jahren eine fertige Oberfläche dafür gabaut, das geht ja mit der LCD-library ziemlich einfach. Als Schätzeisen geht das ganz gut, siehe

das hier

Da steckt auch nur ein AVR dirn.



Dennis

04.03.13 10:50

stimmt wohl. Das Anzeigen des Spannungsverlaufs geht ganz gut.
Die Auswertung ist schon ein bisschen kniffeliger.


Zurück zur Startseite
Seiten: 1 | 2 | 3 | 4 | 5 | (6) | 7 | 8 | 9