Forum » Elektrotehnika in elektronika » arduino, bluetooth, l293d "break" ukaz
arduino, bluetooth, l293d "break" ukaz
geodet MD ::
Zdravo
izdelujem daljinski avto. Uporabljam arduino unor3, hc05 bluetooth modul, in l293d čip. ko povežem dela skoraj vse kot sem si zamislil samo, ko dam ukaz za naprej arduino motor vrti v nedogled, dokler ga jaz z drugim ukazom ne prekinem. Jaz pa bi rad, da dokler držim tipko za naprej, se naj motor vrti naprej, drugače pa se naj ustavi. kako bi to vključil v kodo, ki jo uporabljam?
Hvala za pomoč
int LED=13;
volatile int state = LOW;
char getstr;
int in1=6;
int in2=5;
int in3=4;
int in4=3;
int ENA=7;
int ENB=2;
int ABS=135;
void _mForward()
{
digitalWrite(ENA,HIGH);
digitalWrite(ENB,HIGH);
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
//digitalWrite(in3,LOW);
//digitalWrite(in4,HIGH);
Serial.println("go forward!");
}
void _mBack()
{
digitalWrite(ENA,HIGH);
digitalWrite(ENB,HIGH);
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
//digitalWrite(in3,HIGH);
//digitalWrite(in4,LOW);
Serial.println("go back!");
}
void _mleft()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
//digitalWrite(in1,LOW);
//digitalWrite(in2,HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
Serial.println("go left!");
}
void _mright()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
//digitalWrite(in1,HIGH);
//digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
Serial.println("go right!");
}
void _mStop()
{
//digitalWrite(ENA,HIGH);
//digitalWrite(ENB,HIGH);
digitalWrite(in1,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in2,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in3,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in4,LOW); //jaz dodal - drugače tevrstice ni
Serial.println("Stop!");
}
void _mStopFB()
{
//digitalWrite(ENA,HIGH);
//digitalWrite(ENB,HIGH);
digitalWrite(in1,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in2,LOW); //jaz dodal - drugače tevrstice ni
//digitalWrite(in3,LOW); //jaz dodal - drugače tevrstice ni
//digitalWrite(in4,LOW); //jaz dodal - drugače tevrstice ni
Serial.println("Stop!");
}
void _mStopLR()
{
//digitalWrite(ENA,HIGH);
//digitalWrite(ENB,HIGH);
//digitalWrite(in1,LOW); //jaz dodal - drugače tevrstice ni
//digitalWrite(in2,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in3,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in4,LOW); //jaz dodal - drugače tevrstice ni
Serial.println("Stop!");
}
void stateChange()
{
state = !state;
digitalWrite(LED, state);
}
void setup()
{
pinMode(LED, OUTPUT);
Serial.begin(9600);
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
pinMode(ENA,OUTPUT);
pinMode(ENB,OUTPUT);
//_mStop();
}
void loop()
{
getstr=Serial.read();
if(getstr=='F')
{
_mForward();
//delay(30);
}
else if(getstr=='B')
{
_mBack();
//delay(25);
}
else if(getstr=='L')
{
_mleft();
// delay(25);
}
else if(getstr=='R')
{
_mright();
//delay(25);
}
// else if(getstr=='G')
// {
// _mForward();
// _mleft ();
// //delay(25);
// }
// else if(getstr=='I')
// {
// _mForward();
// _mright();
// //delay(25);
// }
// else if(getstr=='H')
// {
// _mBack();
// _mleft();
// //delay(25);
// }
// else if(getstr=='J')
// {
// _mBack();
// _mright();
// //delay(25);
// }
else if(getstr=='A')
{
stateChange();
}
else if(getstr=='W' or getstr=='w')
{
_mStopFB();
}
else if(getstr=='U' or getstr=='u')
{
_mStopLR();
}
else if(getstr=='V' or getstr=='v')
{
_mStop();
}
}
izdelujem daljinski avto. Uporabljam arduino unor3, hc05 bluetooth modul, in l293d čip. ko povežem dela skoraj vse kot sem si zamislil samo, ko dam ukaz za naprej arduino motor vrti v nedogled, dokler ga jaz z drugim ukazom ne prekinem. Jaz pa bi rad, da dokler držim tipko za naprej, se naj motor vrti naprej, drugače pa se naj ustavi. kako bi to vključil v kodo, ki jo uporabljam?
Hvala za pomoč
int LED=13;
volatile int state = LOW;
char getstr;
int in1=6;
int in2=5;
int in3=4;
int in4=3;
int ENA=7;
int ENB=2;
int ABS=135;
void _mForward()
{
digitalWrite(ENA,HIGH);
digitalWrite(ENB,HIGH);
digitalWrite(in1,LOW);
digitalWrite(in2,HIGH);
//digitalWrite(in3,LOW);
//digitalWrite(in4,HIGH);
Serial.println("go forward!");
}
void _mBack()
{
digitalWrite(ENA,HIGH);
digitalWrite(ENB,HIGH);
digitalWrite(in1,HIGH);
digitalWrite(in2,LOW);
//digitalWrite(in3,HIGH);
//digitalWrite(in4,LOW);
Serial.println("go back!");
}
void _mleft()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
//digitalWrite(in1,LOW);
//digitalWrite(in2,HIGH);
digitalWrite(in3,HIGH);
digitalWrite(in4,LOW);
Serial.println("go left!");
}
void _mright()
{
analogWrite(ENA,ABS);
analogWrite(ENB,ABS);
//digitalWrite(in1,HIGH);
//digitalWrite(in2,LOW);
digitalWrite(in3,LOW);
digitalWrite(in4,HIGH);
Serial.println("go right!");
}
void _mStop()
{
//digitalWrite(ENA,HIGH);
//digitalWrite(ENB,HIGH);
digitalWrite(in1,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in2,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in3,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in4,LOW); //jaz dodal - drugače tevrstice ni
Serial.println("Stop!");
}
void _mStopFB()
{
//digitalWrite(ENA,HIGH);
//digitalWrite(ENB,HIGH);
digitalWrite(in1,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in2,LOW); //jaz dodal - drugače tevrstice ni
//digitalWrite(in3,LOW); //jaz dodal - drugače tevrstice ni
//digitalWrite(in4,LOW); //jaz dodal - drugače tevrstice ni
Serial.println("Stop!");
}
void _mStopLR()
{
//digitalWrite(ENA,HIGH);
//digitalWrite(ENB,HIGH);
//digitalWrite(in1,LOW); //jaz dodal - drugače tevrstice ni
//digitalWrite(in2,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in3,LOW); //jaz dodal - drugače tevrstice ni
digitalWrite(in4,LOW); //jaz dodal - drugače tevrstice ni
Serial.println("Stop!");
}
void stateChange()
{
state = !state;
digitalWrite(LED, state);
}
void setup()
{
pinMode(LED, OUTPUT);
Serial.begin(9600);
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
pinMode(ENA,OUTPUT);
pinMode(ENB,OUTPUT);
//_mStop();
}
void loop()
{
getstr=Serial.read();
if(getstr=='F')
{
_mForward();
//delay(30);
}
else if(getstr=='B')
{
_mBack();
//delay(25);
}
else if(getstr=='L')
{
_mleft();
// delay(25);
}
else if(getstr=='R')
{
_mright();
//delay(25);
}
// else if(getstr=='G')
// {
// _mForward();
// _mleft ();
// //delay(25);
// }
// else if(getstr=='I')
// {
// _mForward();
// _mright();
// //delay(25);
// }
// else if(getstr=='H')
// {
// _mBack();
// _mleft();
// //delay(25);
// }
// else if(getstr=='J')
// {
// _mBack();
// _mright();
// //delay(25);
// }
else if(getstr=='A')
{
stateChange();
}
else if(getstr=='W' or getstr=='w')
{
_mStopFB();
}
else if(getstr=='U' or getstr=='u')
{
_mStopLR();
}
else if(getstr=='V' or getstr=='v')
{
_mStop();
}
}
KraitPay ::
Nikjer ne "resetiraš" motorčkov. Ko pritisneš tipko F, greš naprej, ko jo spustiš, imaš motorčke še vedno prižgane. Najenostavneje je da v main dodaš še periodično izkapljanje motorčkov. Torej recimo, da vsake 250ms, resetiraš vse motorče, torej kličeš _mSTOP().
Drugače pa lahko rešiš tudi z while() stavkom in znotraj stavka, ko spustiš tipko, kličeš _mStop().
}
Drugače pa lahko rešiš tudi z while() stavkom in znotraj stavka, ko spustiš tipko, kličeš _mStop().
}
geodet MD ::
Hvala javim zvečer če sem uspel. Zaenkrat bom probal z while(). V čem je razlika med if () oz. else if () v kodi ki jo uporabljam. Zakaj ne morejo vsi stavki bit enostavno if (). Koliko je moje razumevanje programiranja (zelo zelo na osnovni ravni) če imam stavek if() pomeni, če imam nekaj naredi to. Če imam stavek esle if () pomeni, če imam nekaj naredi to, drugače naredi nekaj drugega. zakaj ne morem stop funcije klicat z else if().
if(getstr=='L')
{
_mleft();
// delay(25);
}
else if ()
{
_mStop();
// delay(25);
}
if(getstr=='L')
{
_mleft();
// delay(25);
}
else if ()
{
_mStop();
// delay(25);
}
geodet MD ::
Z funkcijo while() nisem uspel rešit zadeve. Dodal sem
if(getstr=='L')
{
_mleft();
// delay(25);
}
while(getstr !='L')
{
_mStopLR();
}
in sedaj samo šiba ukaza za _mStopLR ()
"Najenostavneje je da v main dodaš še periodično izkapljanje motorčkov" to niti ne vem kaj naj naredim. prosim za pomoč.
if(getstr=='L')
{
_mleft();
// delay(25);
}
while(getstr !='L')
{
_mStopLR();
}
in sedaj samo šiba ukaza za _mStopLR ()
"Najenostavneje je da v main dodaš še periodično izkapljanje motorčkov" to niti ne vem kaj naj naredim. prosim za pomoč.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Merjenje prevodnosti vode?Oddelek: Elektrotehnika in elektronika | 3024 (2179) | Ribič |
» | Arduino kot časovni releOddelek: Pomoč in nasveti | 1608 (1194) | davor92 |
» | Pomoč C++Oddelek: Pomoč in nasveti | 1350 (1069) | samo111 |
» | Arduino in luči (strani: 1 2 )Oddelek: Elektrotehnika in elektronika | 12072 (9698) | FX6300B |
» | Arduino "leteče luči"Oddelek: Elektrotehnika in elektronika | 2999 (1876) | zrataj4201 |