Arduino duemillanove

Hallo Leute,

ich habe mir einen arduino duemillanove gekauft und möchte einen motor mit 4 verschiedenen spannungen versorgen. Ich hab mir gedacht ich mach das per pwm signal. Ich habe 4 taster und je nachdem welcher taster gedrückt ist, möchte ich einen anderen wert der "spannung" ausgeben.Kann mir da jemand helfen? Wie deklariere ich zum beispiel die eingänge und den pwm ausgang? Vielen Dank für eure Hilfe

Da gibst hier Beispiele, die ziemlich genau das zeigen was Du willst. :)

Besonders interessant für Dich sollten "Button" und vermutlich "Fading" sein.

Da das Arduino-Board pro Pin nur etwa 20 Milliampere ausspucken kann wirst Du für den Motor vermutlich noch eine Treiberstufe brauchen. Die Ausführung (kleiner Transistor, Mosfet, schwere Motorsteuerung) hängt von der Leistung ab, die der Motor zieht.

mhh soweit so gut ;-) Das hört sich gut und verständlich an. Jetzt habe ich ja noch meinen Timer. Wie sag ich denn meinem Programm, dass er mir z.B. am Pin 5 ein PWM Signal ausgibt. Es soll verschiedene Tastverhältnisse haben...erster Taster 50 %, 2ter 70% zum Beispiel...vielen Dank und viele Gruesse,

Jimmy

Da musst Du Dich überhaupt nicht drum kümmern, das PWM-Zeugs macht der Arduino ganz allein für Dich, wenn Du ihm mit analogWrite kommst. :)

0 ist "nix", 255 ist "volle Pulle" und 128 ist in der Mitte dazwischen. ;)

PWM mit 70% wäre also analogWrite(5, 179).

mhh das hört sich ja recht einfach an :-)also kann ich dem dann z.B. schreiben

const int Pin1 = 1; const int Pin2 = 2; int pinstate1 = 0; int pinstate2 = 0;

void setup() {

pinMode(Pin1,INPUT); pinMode(Pin1,INPUT); } void loop(){ pinstate1=digitalRead(Pin1); pinstate2=digitalRead(Pin2);

if(pinstate1==HIGH & pinstate2==LOW{ analogwrite(5,179) } if(pinstate1==LOW & pinstate2==HIGH){ analogwrite(5,128) } }

oder muss ich das irgendwie anders unterbringen ?Also ich will mehrere Bedingungen in einer if-Schleife haben und die spannungen dann dem entsprechened Fall anpassen. Wie kann ich denn am geschicktesten meinen Timer konfigurieren? Ich dachte ich nehm für die PWM den Timer 1. Vielen Dank und viele Grüsse,

Jimmy

Hallo Jimmy

Du schreibst 2x pinMode(Pin1,INPUT); pinMode(Pin1,INPUT);

Wahrscheinlich meintest Du beim 2. mal Pin2.

Was meinst Du mit dem Timer? Grüße Uwe

oh ja da meinte ich Pin2. Also ich bräuchte ne Frequenz im Bereich von 20kHz und da will ich ja die Tastverhältnisse meines PWM-Signals je nachdem welcher Taster/Schalter gedrückt ist ändern. Wie muss ich da den Timer einstellen, so dass mein PWM-Signal am Pin5 anliegt? Und kann ich die &-Verknüpfung in meiner if-Bedingung so lassen? Vielen Dank und viele Grüsse,

Jimmy

Wieso willst Du 20 kHz? Gehen die 490 Hz Standart nicht gut? Grüße Uwe

also meine Treiberstufe fuer meinen Motor braucht minimum 500Hz...deshalb hätt ich gern nen sicheren Bereich und der wäre so um 20 kHz aber zur Not wuerde ich auch alles andere ueber 500 Hz nehmen :-) Ist es irgendwie möglich ne höhere Frequenz mit nem Timer an einem der Pins auszugeben ??

MFG

Warum nimmst du nicht einfach das "Blinkbeispiel" und setzt das Delay sehr weit runter ? Könntest sagen: 1 Millisekunde an und z.B 5 Millis aus.

Ok, das macht natürlich keinen Sinn wenn der Arduino noch andere Sachen zu tun hat. Aber zum Testen denke ich wäre das ne brauchbare Idee ;)

mhh also mit der delay funktion wuerde ich es gerne vermeiden,da mein Programm dann ja praktisch angehalten wird...ist es nicht möglich ein PWM-Signal mit ner anderen Frequenz als den 490 Hz mit dem Arduino zu erzeugen? MFG

schau mal hier: http://www.arduino.cc/playground/Main/TimerPWMCheatsheet

mhhh...also die 8kHz wuerden mir auch reichen :-) Wie wuerdest du denn das im Quellcode verpacken??Ich hätte das gern am Pin 5...also mit Timer0, die delay funktion brauch ich eh nicht. Vielen Dank schonmal,

MFG

na einfach TCCR0B = TCCR0B & 0b11111000 | 0x02;
für rund 8 kHz in die setup Funktion, einen Wert am Pin 5 ausgeben und dann mit einem Oszi mal nachmessen.
Dürfte aber eigentlich so passen.
Da musste mal schauen, ob die Wert 0-255 noch aktuell sind oder jetzt 0-1023 ist. Das weiß ich jetzt leider nicht.

Dann werd ich das mal testen!! Vielen vielen Dank! Wenns nicht klappt schreib ich wieder :wink: