» »

Pomoc, program Fritzing

Pomoc, program Fritzing

Han_Neu ::

Lep pozdrav.
Dolgo je ze tega kar sem obiskoval racunalnisko solo. Vendar sem se spet srecal z programom Fritzing in ker sem 90% stvari pozabil ( delam namrec v drugacnih vodah ) se obracam na Vas dragi elektrotehniki. Imam problemcic kjer moram zvezat 3 servo motorje in 6 gumbov. Torej vsak servo ma 2 gumba, eden za levo eden za desno. Problem imam pri kodiranju namrec servo motorji se mi sucejo nenadzorrovano v levo. Lepo prosim za pomoc je malo nujna zadeva. Prilepim kodo in sliko.
http://i58.tinypic.com/2ce6j51.png[/IMG] Fritsing]

Koda:
#include Servo.h (servo.h je v < >)

Servo servo;

Servo servo2;

Servo servo3;

const int buttonPin1 = 2;

const int buttonPin2 = 3;

const int buttonPin3 = 4;

const int buttonPin4 = 5;

const int buttonPin5 = 6;

const int buttonPin6 = 7;

int buttonState1 = 0;

int buttonState2 = 0;

int buttonState3 = 0;

int buttonState4 = 0;

int buttonState5 = 0;

int buttonState6 = 0;

void setup() {

servo.attach(9);

servo2.attach(10);

servo3.attach(11);

pinMode(buttonPin1, INPUT);

pinMode(buttonPin2, INPUT);

pinMode(buttonPin3, INPUT);

pinMode(buttonPin4, INPUT);

pinMode(buttonPin5, INPUT);

pinMode(buttonPin6, INPUT);

}

void loop() {

buttonState1 = digitalRead(buttonPin1);

buttonState2 = digitalRead(buttonPin2);



if (buttonState1 == HIGH)

{

servo.writeMicroseconds(1000);

}

else if (buttonState2 == HIGH)

{

servo.writeMicroseconds(2000);

}

buttonState3 = digitalRead(buttonPin3);

buttonState4 = digitalRead(buttonPin4);



if (buttonState3 == HIGH)

{

servo2.writeMicroseconds(1000);

}

else if (buttonState4 == HIGH)

{

servo2.writeMicroseconds(2000);

}

buttonState5 = digitalRead(buttonPin5);

buttonState6 = digitalRead(buttonPin6);



if (buttonState5 == HIGH)

{

servo3.writeMicroseconds(1000);

}

else if (buttonState6 == HIGH)

{

servo3.writeMicroseconds(2000);

}

}

Hvala vnaprej in srecno :)
  • spremenil: Han_Neu ()

Crossfire ::

Predlagam, da najprej osvojiš kontrolo nad enim servotom in potem sistematično dodajaš druga dva.
Pomagaj si s tem:
https://blasphemousbits.wordpress.com/2...

http://www.instructables.com/id/Servo-C...

Zgodovina sprememb…

  • spremenilo: Crossfire ()

Han_Neu ::

Hvala. Super.
Sem pod drugim linkom zvezal in dodal kodo in je delal.
Zdej pa sam naj me en usmeri kak v kodi dodam da iz vsakega gumba posebi bere torej servo1 levo desno servo 2 levo desno itd

Han_Neu ::

okej uspelo zvezati. Sam en problemcek se mam. in namrec s kodo ki sem jo napisal s pomocjo Crossfira ( hvala za linke ).
stvar naceloma dela vendar se mi ob pritisku katerega koli gumba za levo ali desno obrnjo vsi servoti. Ce kdo ve kje sem naredil napako lepo prosim povejte.
Hvala.



const int buttonPin = 2;
const int buttonPin3 = 6;
const int buttonPin4 = 7;
const int buttonPin2 = 4;
const int buttonPin5 = 3;
const int buttonPin6 = 5;

int buttonState = 0;
int buttonState3 = 0;
int buttonState4 = 0;
int buttonState2 = 0;
int buttonState5 = 0;
int buttonState6 = 0;

Servo servoA, servoB, servoC;

int position = 0;

void setup() {

servoA.attach(9);
servoB.attach(10);
servoC.attach(11);

pinMode(buttonPin, INPUT);
pinMode(buttonPin3, INPUT);
pinMode(buttonPin4, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin5, INPUT);
pinMode(buttonPin6, INPUT);

}

void loop() {

buttonState = digitalRead(buttonPin);
buttonState2 = digitalRead(buttonPin2);
if(buttonState ==HIGH && position < 180){
servoA.write(position++);
delay(5);
}
if(buttonState2 == HIGH && position > 3){
servoA.write(position--);
delay(5);
}
buttonState3 = digitalRead(buttonPin3);
buttonState4 = digitalRead(buttonPin4);
if(buttonState3 ==HIGH && position < 180){
servoB.write(position++);
delay(5);
}
if(buttonState4 == HIGH && position > 3){
servoB.write(position--);
delay(5);
}
buttonState5 = digitalRead(buttonPin5);
buttonState6 = digitalRead(buttonPin6);
if(buttonState5 ==HIGH && position < 180){
servoC.write(position++);
delay(5);
}
if(buttonState6 == HIGH && position > 3){
servoC.write(position--);
delay(5);

}
}

Crossfire ::

Han_Neu je izjavil:

okej uspelo zvezati. Sam en problemcek se mam. in namrec s kodo ki sem jo napisal s pomocjo Crossfira ( hvala za linke ).
stvar naceloma dela vendar se mi ob pritisku katerega koli gumba za levo ali desno obrnjo vsi servoti. Ce kdo ve kje sem naredil napako lepo prosim povejte.
Hvala.

Za vse 3 servote imaš v loopu enak position...imaš namreč 3 različne positione, torej position1 za servo 1, position2 za servo2 in position3 za servo3.

Han_Neu ::

Res je. Hvala lepa Crossfire. Resenno. Ce bos kej u celju mas pivo v dobrem :).

Se lahko zaklene. Lp.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Arduino kot časovni rele

Oddelek: Pomoč in nasveti
81607 (1193) davor92
»

Pomoč C++

Oddelek: Pomoč in nasveti
71350 (1069) samo111
»

Arduino in luči (strani: 1 2 )

Oddelek: Elektrotehnika in elektronika
9812068 (9694) FX6300B
»

Arduino "leteče luči"

Oddelek: Elektrotehnika in elektronika
132997 (1874) zrataj4201
»

Arduino - krmiljenje stepper motorjev

Oddelek: Elektrotehnika in elektronika
153723 (2902) steling

Več podobnih tem