Hallo
ich möchte eine Steuerung für Mein Camcorder zu bauen,
Der Camcorder soll gedreht und geneigt werden, dazu die position (oder mehrere) gespechert und dann abgerufen werden.
Habe schon soeine Steuerung mit Siemens Logo, aber der ist zu gross und zu teuer.
Seit paar Tagen versuche ich es mit Arduino, schritt für schritt, und wenn das so weiter geht werde ich noch nach Monaten nicht fertig.
Folgenden sketch habe ich geschrieben, ich kann die position speichern und abrufen, leider manuell geht nicht.
Ah, das ist erst ein versuch, und an stelle von Schritt- oder Servomotoren habe ich LED_s angeschlossen.
Noch etwas: wenn jemand bereit wäre dies für mich zu schreiben oder zu ergänzen, bin ich auch bereit (nach absprache) dafür zu bezahlen.
MfG an alle
Peterint zaehler=-1; // zaehlt impulse
int reedPin=9; //reedkontakt
int sw_man_li=4; //manuell li
int sw_man_re=10; //manuell re
int prog=0;
int sw_prog=5; //mit pos_1 oder pos_2
//speichert aktuellen zaehler als pos_1 oder pos_2
int sw_pos_1=12; // schreibt pos_1 als pos
int sw_pos_2=11; // schreibt pos_2 als pos
int pos_1=5; //
int pos_1a=0; //
int pos_2=-3; //
int pos_2a=0; //
int pos=6; //wenn pos<>zaehler, geht led (rot oder gruen)an
//solange zaehler=pos
int richtung=2; // bestimmt die richtung (1=re, 0=li, 2=stop)
int led=13; //anzeige "motor stop"
int led_rt=6; //anzeige "motor links"
int led_gn=8; //anzeige "motor rechts"
int state1;
int laststate1;
int state2;
int laststate2;
void setup()
{ Serial.begin(9600);
Serial.println("start");
Serial.println();
pinMode (reedPin,INPUT);
digitalWrite (reedPin,HIGH);
pinMode (sw_pos_1,INPUT);
digitalWrite (sw_pos_1,HIGH);
pinMode(led, OUTPUT);
pinMode(led_rt, OUTPUT);
pinMode(led_gn, OUTPUT);
pinMode (sw_pos_2,INPUT);
digitalWrite (sw_pos_2,HIGH);
pinMode (sw_prog, INPUT);
digitalWrite(sw_prog, HIGH);
}
void loop()
{
{
if (digitalRead(sw_pos_1)==LOW)
{
pos_1a=1;
}
}
{
if (digitalRead(sw_pos_2)==LOW)
{
pos_2a=1;
}
}
{
if (digitalRead(sw_prog)==LOW)
{
prog=1;
}
}
{
if ((pos_1a==1)&&(prog==1))
pos_1=zaehler;
}
{if ((pos_2a==1)&&(prog==1))
pos_2=zaehler;
}
{
if (pos_1a==1)
pos=pos_1;
}
{
if (pos_2a==1)
pos=pos_2;
}
pos_1a=0;
pos_2a=0;
prog=0;
{
if (richtung==0)
{
digitalWrite(led_rt, HIGH);
}
else
{
digitalWrite(led_rt, LOW);
}}
{
if (richtung==1)
{
digitalWrite(led_gn, HIGH);
}
else
{digitalWrite(led_gn, LOW);
}}
{
if (richtung==2)
{
digitalWrite(led, HIGH);
}
else
{digitalWrite(led, LOW);
}
}
if(pos==zaehler)
richtung=2;
if(pos<zaehler)
richtung=1;
if(pos>zaehler)
richtung=0;
Serial.println("");
Serial.println();
Serial.print("zaehler= ");
Serial.println(zaehler);
Serial.print("gewaellte position = ");
Serial.println(pos);
Serial.print("pos 1= ");
Serial.println(pos_1);
Serial.print("pos 2= ");
Serial.println(pos_2);
Serial.print("pos 1a= ");
Serial.println(pos_1a);
Serial.print("pos 2a= ");
Serial.println(pos_2a);
Serial.print("richtung =");
Serial.print(richtung);
Serial.println();
Serial.println("");
delay(1000); // nur um Anzeige abzulesen
{
{
int state1=digitalRead(reedPin);
{
if ((digitalRead(reedPin)==HIGH)&&richtung==0) //zaehler rauf
delay(20);
{ if (state1==1 && laststate1==0&&richtung==0)
zaehler++;
laststate1=state1;
}
}
}
{
int state2=digitalRead(reedPin);
{
if ((digitalRead(reedPin)==HIGH)&&richtung==1)//zaehler runter
delay(20);
{
if (state2==1 && laststate2==0&&richtung==1)
zaehler--;
laststate2=state2;
}
}
}
}
}