Go Down

Topic: aller Anfang ist schwer ! (Read 1 time) previous topic - next topic

peter_pan

Feb 16, 2010, 07:15 pm Last Edit: Feb 16, 2010, 07:18 pm by peter_pan Reason: 1
aller Anfang ist schwer.
mir raucht der kopf und ich komm nicht weiter.
vielleicht ist einer von euch so nett und kann mir das ganze ergänzen oder besser noch, neu schreiben.
vielleicht wird mir dadurch einiges klarer ;)
mein ziel ist es, mit einem poti ein delay zu steuern, mit dem ich die Geschwindigkeit der Stepps zwischen pin1 bis pin4 steuer.
---> delay(analogRead(Potentiometer)
ein zweites poti soll noch dazu kommen, mit dem ich rythmus1 bis 4 einstellen kann. also wie ein Schalter mit 4 Stellungen.
ich hoffe, das ist einigermaßen beschrieben und ihr könnt was damit anfangen.
ich würde mich freuen, wenn sich einer die mühe macht und mir das fertig schreibt.
wenn es nicht zuviel verlangt ist, soll später noch eine Funktion dazu kommen.
ich möchte mit einem dritten poti noch bestimmen wie viele Steps pro Rhythmus ablaufen. also ob es nur Pin1 ansteuert, oder bis Pin2 durchläuft, Pin3 oder bis Pin4.
ich bedanke mich schon mal und hoffe auf eure Hilfe.


Code: [Select]
int Pin1 = 4;
int Pin2 = 5;
int Pin3 = 6;
int Pin4 = 7;

int Potentiometer = 0;


void setup()
{
 pinMode(Pin1, OUTPUT);
 pinMode(Pin2, OUTPUT);
 pinMode(Pin3, OUTPUT);
 pinMode(Pin4, OUTPUT);
 
}

void loop()




int rythmus1()
{
 digitalWrite(Pin1, HIGH);
 delay(50);
 digitalWrite(Pin1, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin2, LOW);
 delay(50);
 digitalWrite(Pin2, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin3, HIGH);
 delay(50);
 digitalWrite(Pin3, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin4, LOW);
 delay(50);
 digitalWrite(Pin4, LOW);
 delay(analogRead(Potentiometer);
}

int rythmus2()
{
 digitalWrite(Pin1, HIGH);
 delay(50);
 digitalWrite(Pin1, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin2, HIGH);
 delay(50);
 digitalWrite(Pin2, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin3, LOW);
 delay(50);
 digitalWrite(Pin3, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin4, LOW);
 delay(50);
 digitalWrite(Pin4, LOW);
 delay(analogRead(Potentiometer);
}

int rythmus3()
{
 digitalWrite(Pin1, LOW);
 delay(50);
 digitalWrite(Pin1, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin2, LOW);
 delay(50);
 digitalWrite(Pin2, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin3, HIGH);
 delay(50);
 digitalWrite(Pin3, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin4, HIGH);
 delay(50);
 digitalWrite(Pin4, LOW);
 delay(analogRead(Potentiometer);
}

int rythmus4()
{
 digitalWrite(Pin1, HIGH);
 delay(50);
 digitalWrite(Pin1, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin2, HIGH);
 delay(50);
 digitalWrite(Pin2, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin3, HIGH);
 delay(50);
 digitalWrite(Pin3, LOW);
 delay(analogRead(Potentiometer);
 digitalWrite(Pin4, LOW);
 delay(50);
 digitalWrite(Pin4, LOW);
 delay(analogRead(Potentiometer);
}




Jomelo

Will dich nun nicht beleidigen, aber fang doch erstmal mit kleinen Schritten an, anstatt direkt ein größeres Projekt zu realisieren.

Für mich sieht der Code so aus, als wäre der eben zusammenkopiert.

Es gibt in der Arduino Software viele Beispiele und wenn man sich da langsamm durcharbeitet,  dann versteht man meistens mehr, als wenn wir dir hier ein fertiges Programm zurückliefern. Die sind dann meistens nicht mehr so leicht zu verstehen.

Gruß  Jomelo
while(!success){try++;}

webmeister

Ich denke auch, dass du besser klein anfängst und dich in die Programmierung von Arduino einarbeitest. Viele Einsteiger starten mit zu aufwendigen Projekten.
Mach einfach Schritt für Schritt

Quote
ich würde mich freuen, wenn sich einer die mühe macht und mir das fertig schreibt.
wenn es nicht zuviel verlangt ist, soll später noch eine Funktion dazu kommen.


Sorry, aber das ist hier kein Programmierservice. Ein Forum ist da um zu unterstützen und nicht um fertige Programme, und die noch kostenlos, anzufordern. Das ist zuviel verlangt.

Falls du dich nicht tiefer in die Thematik einarbeiten willst, sehe ich keinen Erfolg mit dem Projekt.

Quote
void loop()




int rythmus1()
{


Da hast du die Klammern für void loop() vergessen. Das sollte wohl so aussehen

Quote

void loop()
{

// Anweisungen

}


int rythmus1()
{

}



Wie gesagt, mach Schritt für Schritt und lerne den Code und die Struktur der Programme kennen.

peter_pan

ok,
ihr habt sicherlich recht.
ich will wohl zu schnell ans ziel und versuch dabei abkürzungen zu nehmen, die nix bringen.
ich dachte, wenn ich das skript verbessert und erweitert sehen würde, könnte ich es mir besser erklären.

Jomelo

#4
Feb 17, 2010, 10:35 am Last Edit: Feb 17, 2010, 10:37 am by Jomelo Reason: 1
Bei deinem Script gibt es im Moment so keine Möglichkeit das zu verbessern.

Ich würde so vorgehen, wenn ich das realisieren sollte:

1. Poti als Spannungsteiler an den analogen Eingang anschließen
2. Werte des Analogen Einganges in 4 Bereiche unterteilen
   z.B  schaltfunktionen:
   - 1.   (0-65)
   - 2.   (66-131)
   - 3.   (131-186)
   - 4.   (187-255)
   Das ganze kannst du mit  der   if Anweisung und den
   <, >, ==, >=, <=  Operatoren realisieren.
3. Funktionen ansteuern.


Version B:
1. Alles Variabel machen, also jeden analogen Wert direkt in eine delay Funktion schreiben, dafür solltest du dann den Umgang mit lokalen und Globalen Variabeln lernen.

Aber wie du das nun programmierst, das steht nur in den Grundlagen.


Es ist ja nicht so, dass wir dir nicht helfen wollen,  es ist nur der falsche Ansatz den du gewählt hast  ;)
         
while(!success){try++;}

unic

mein tipp von anfänger zu anfänger:

kopiere KEINE CODE. Schreibe nur das in den Code was du verstanden hast. sonst wird das mit dem lernen nichts. war bei mir zum mindest so.

ich les mir zwar codes durch um weiter zu kommen, aber kopieren ist ganz ungünstig fuers verständnis. ich kopiere im moment nur komplexe dinge. z.b. den code zum auslesen einer funkuhr. da sich ja nur die uhrzeit fuer meinen code benötige. Da will ich nicht den ganzen code um das bauteil anzusteuern verstehen....

gruß rafael

peter_pan

danke euch für die hilfe.
die ersten sachen laufen jetzt so wie sie sollen.
aber keine panik, die nächsten fragen kommen bestimmt bald ;)

Go Up