Arduino - ovladani DC motorku
Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
-
- Příspěvky: 2
- Registrován: úte říj 22, 2013 7:16 pm
- Reputace: 0
Arduino - ovladani DC motorku
Dobry den,
měl bych prosbu. Mam jako praci vytvorit plosinu se 2 stupni volnosti (toceni kolem osy o 360° a naklon vrchni casti plosiny o +/- 60°). Ovladani je reseno pres pocitat pres FTDI (seriovku). Nejlepe bych to chtel resit klavesami. Resim ted ovladani DC motorku, uz jsem si vytvoril par prototypu, ale u jednoho z nich se mi stava, ze jakmile zmacknu klavesu, tak se motorek rozjede, nasledne zastavi a pak dale jede (jakoby cukne). Samozrejme to resim tak, ze jakmile pustim klavesu, tak se motorek zastavi. Neni tu nekdo, kdo by mi mohl pomoct/poradit, jak toto vyresit, pripadne napsat, jak to resit? Aktualne jsem to resil bezdratove. Pro ovladani z klavesnice jsem pouzil terminalovej program putty.
Zde prikladam program z arudina.
měl bych prosbu. Mam jako praci vytvorit plosinu se 2 stupni volnosti (toceni kolem osy o 360° a naklon vrchni casti plosiny o +/- 60°). Ovladani je reseno pres pocitat pres FTDI (seriovku). Nejlepe bych to chtel resit klavesami. Resim ted ovladani DC motorku, uz jsem si vytvoril par prototypu, ale u jednoho z nich se mi stava, ze jakmile zmacknu klavesu, tak se motorek rozjede, nasledne zastavi a pak dale jede (jakoby cukne). Samozrejme to resim tak, ze jakmile pustim klavesu, tak se motorek zastavi. Neni tu nekdo, kdo by mi mohl pomoct/poradit, jak toto vyresit, pripadne napsat, jak to resit? Aktualne jsem to resil bezdratove. Pro ovladani z klavesnice jsem pouzil terminalovej program putty.
Zde prikladam program z arudina.
String command = "";
uint8_t state = 0; // 0 = copy as hex, 1 char received, 2 = command, 3 = command ended, 4 esc
unsigned int time = 0;
unsigned long prev = 0;
void setup() {
Serial.begin(57600);
command.reserve(50);
digitalWrite(2,HIGH);
for (char i=2; i<13; ++i) pinMode(i,OUTPUT);
}
void loop() {
unsigned char x = '0';
if (Serial.available()) {
x = (char) Serial.read();
switch (state) {
case 0: if (x == '+') { state=2; } else if (x == 27) { state=4; } else if (x!='\r' && x!='\n') { state=1; } break;
case 2: if (x == '\n' || x == '\r') { state=3; } else { command += (char)x; } break;
case 4: if (x == '[') { state = 5; } else { state = 0; } break;
case 5:
switch (x) {
case 0x41: digitalWrite(4,HIGH); time=20; break;
case 0x42: digitalWrite(2,HIGH); time=20; break;
case 0x43: digitalWrite(6,HIGH); time=200; break;
case 0x44: digitalWrite(7,HIGH); time=200; break;
}
state = 0;
break;
}
}
if (state == 1) {
Serial.print((char)x);
Serial.print(' ');
state = 0;
} else if (state == 3) {
if (command == "CONNECTED") { digitalWrite(2,LOW); }
state=0;
command="";
}
if (time > 0) {
unsigned char tmp = millis() - prev; // char staci
if (tmp > 0) {
if (tmp > time) {
time = 0;
} else {
time -= tmp;
}
}
}
if (time == 0) {
digitalWrite(4,LOW);
digitalWrite(2,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
}
prev = millis();
}
-
- Příspěvky: 2
- Registrován: úte říj 22, 2013 7:16 pm
- Reputace: 0
Re: Arduino - ovladani DC motorku
Zde jeste prilozim na prime ovladani bez bezdratu.
unsigned int time = 0;
unsigned long prev = 0;
void setup() {
}
void loop() {
unsigned char x = '0';
if (Serial.available()) {
x = (char) Serial.read();
switch (x) {
case 'a': case 'A':
digitalWrite(2,HIGH); time=200; break;
case 'b': case 'B':
digitalWrite(4,HIGH); time=200; break;
}
}
/* time = 200; */
if (time > 0) {
unsigned char tmp = millis() - prev; // char staci
if (tmp > 0) {
if (tmp > time) {
time = 0;
} else {
time -= tmp;
}
}
}
if (time == 0) {
digitalWrite(2,LOW); // zastavit kterykoliv smer
digitalWrite(4,LOW); // ... a bude se zastavovat ikdyz se jen neco blbe nastavi
}
prev = millis();
}
-
- Podobná témata
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 3 Odpovědi
- 1097 Zobrazení
-
Poslední příspěvek od ikovlabs
-
- 5 Odpovědi
- 2095 Zobrazení
-
Poslední příspěvek od glottis
-
- 12 Odpovědi
- 1525 Zobrazení
-
Poslední příspěvek od TomHC
-
- 8 Odpovědi
- 1939 Zobrazení
-
Poslední příspěvek od rottenkiwi
-
- 14 Odpovědi
- 2616 Zobrazení
-
Poslední příspěvek od FCC
Kdo je online
Uživatelé prohlížející si toto fórum: Claudebot [Bot] a 0 hostů