I have a Stepper Motor 5V 4-Phase 5-Wire and a driver board for it.
Unfortunately, I do not have the schematics and cannot find them anywhere on the internet for the driver board. Anyways, I connected everything as it was supposed to be and punched in the code (see below), and it works fine but it spins at about 20 RPM, which is horribly slow.
I cannot decrease the time for delayMicroseconds() anymore because if I do, the motor stops spinning, and starts to just vibrate loudly. Please help, I am stuck:
(Port 8 is connected to IN1 on the driver, Port 9 is in IN2, port 10 is
in IN3, and port 11 is in IN4)
int Pin0 = 8;
int Pin1 = 9;
int Pin2 = 10;
int Pin3 = 11;
int _step = 0;
boolean dir = true;// gre
void setup()
{
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
}
void loop()
{
switch(_step){
case 0:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
case 1:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, HIGH);
break;
case 2:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 3:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, HIGH);
digitalWrite(Pin3, LOW);
break;
case 4:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 5:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, HIGH);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 6:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
case 7:
digitalWrite(Pin0, HIGH);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, HIGH);
break;
default:
digitalWrite(Pin0, LOW);
digitalWrite(Pin1, LOW);
digitalWrite(Pin2, LOW);
digitalWrite(Pin3, LOW);
break;
}
if(dir){
_step++;
}else{
_step--;
}
if(_step>7){
_step=0;
}
if(_step<0){
_step=7;
}
delayMicroseconds(800);
}
Related
I am building an IR controlled helicopter with Arduino and the code works, but when I click the next button for the helicopter to move somewhere else, it keeps printing the same thing in the serial monitor and the command does not change... Can someone please help me?
Here is my code:
#include <IRremote.h>
#define in1 6
#define in2 7
#define in3 4
#define in4 5
int IR_RECEIVE_PIN = 2;
IRrecv IrReceiver(IR_RECEIVE_PIN);
decode_results results;
void setup(){
Serial.begin(9600);
IrReceiver.enableIRIn();
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop(){
if(IrReceiver.decode(&results))
switch (results.value) {
case 0xFFA857:
Serial.println("case: UP");
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
break;
case 0xFFE01F:
Serial.println("case: DOWN");
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
break;
case 0xFF18E7:
Serial.println("case: FORWARD");
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
break;
case 0xFF10EF:
Serial.println("case: LEFT");
break;
case 0xFF5AA5:
Serial.println("case: RIGHT");
break;
case 0xFF48B5:
Serial.println("case: BACKWARDS");
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
break;
}
Serial.println(results.value, HEX);
IrReceiver.resume();
}
Try to run the code with curly brackets on the if:
#include <IRremote.h>
#define in1 6
#define in2 7
#define in3 4
#define in4 5
int IR_RECEIVE_PIN = 2;
IRrecv IrReceiver(IR_RECEIVE_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
IrReceiver.enableIRIn();
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
if (IrReceiver.decode(&results)) {
switch (results.value) {
case 0xFFA857:
Serial.println("case: UP");
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
break;
case 0xFFE01F:
Serial.println("case: DOWN");
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
break;
case 0xFF18E7:
Serial.println("case: FORWARD");
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
break;
case 0xFF10EF:
Serial.println("case: LEFT");
break;
case 0xFF5AA5:
Serial.println("case: RIGHT");
break;
case 0xFF48B5:
Serial.println("case: BACKWARDS");
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
break;
}
Serial.println(results.value, HEX);
IrReceiver.resume();
}
}
So I have a project to make for school in which we had to make an arduino project from scratch. I'm relatively new to arduino and his coding and made a simple, yet fun project. I had the idea of making a sort of safe where you have to enter a key and after that, use a potentiometer to make the right combination to open the safe. I don't know what I did wrong but when I uploaded it to my arduino, the program got to the first lines and stopped after printing the first line to the serial monitor. There the program is stuck and doesn't do anything. The weird thing is that it worked 5 minutes ago but now it just wont. Can anyone help me please? My deadline is in a few hours and I can't fix it... Here is the code and a schematic:
Picture of the setup. The 2 resistors on the left are 1k, the other 2 are 10k.
//variabelen
const int pot = A0;
const int pinA = 6;
const int pinB = 5;
const int pinC = 2;
const int pinD = 3;
const int pinE = 4;
const int pinF = 7;
const int pinG = 8;
const int pinP = 9;
const int enter = 11;
const int reset = 12;
byte enterState = 0;
byte lastEnterState = 0;
byte resetState = 0;
byte lastResetState = 0;
int enterTimer = 0;
String wachtwoord;
String ingegeven = "";
//setup
void setup(){
pinMode(pinA, OUTPUT);
pinMode(pinB, OUTPUT);
pinMode(pinC, OUTPUT);
pinMode(pinD, OUTPUT);
pinMode(pinE, OUTPUT);
pinMode(pinF, OUTPUT);
pinMode(pinG, OUTPUT);
pinMode(pinP, OUTPUT);
pinMode(enter, INPUT);
pinMode(reset, INPUT);
Serial.begin(9600);
Serial.println("Geef een wachtwoord op voor de safe.");
wachtwoord = Serial.read();
}
//eigen methoden
void dispChar(int getal){
switch(getal){
case 0:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, HIGH);
break;
case 1:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
break;
case 2:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, HIGH);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, LOW);
break;
case 3:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, LOW);
break;
case 4:
digitalWrite(pinA, HIGH);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
break;
case 5:
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
break;
case 6:
digitalWrite(pinA, LOW);
digitalWrite(pinB, HIGH);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
break;
case 7:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, HIGH);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, HIGH);
digitalWrite(pinG, HIGH);
break;
case 8:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, LOW);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
break;
case 9:
digitalWrite(pinA, LOW);
digitalWrite(pinB, LOW);
digitalWrite(pinC, LOW);
digitalWrite(pinD, LOW);
digitalWrite(pinE, HIGH);
digitalWrite(pinF, LOW);
digitalWrite(pinG, LOW);
break;
}
}
//Kijk of enter knop is ingedrukt
void onEnter(){
enterState = digitalRead(enter);
if(enterState == HIGH){
enterTimer++;
if(enterState != lastEnterState){
ingegeven += map(analogRead(pot), 0, 1023, 0, 9);
Serial.println(ingegeven);
enterTimer = 0;
}
}
delay(50); //Voorkomt bounce.
if(enterTimer > 50){
Serial.println("\nRESET");
enterTimer = 0;
ingegeven = "";
}
lastEnterState = enterState;
check();
}
bool check(){
if(ingegeven.equals(wachtwoord)){
return true;
} else{
if(ingegeven.length() > wachtwoord.length()){
Serial.println("FOUT!");
ingegeven = "";
return false;
}
}
}
//Kijk of reset knop is ingedrukt
void onReset(){
resetState = digitalRead(reset);
if(resetState != lastResetState){
if(resetState == HIGH){
ingegeven = "";
Serial.println("Geef een wachtwoord op voor de safe.");
wachtwoord = Serial.read();
}
}
delay(50); //Voorkomt bounce.
lastResetState = resetState;
}
//loop
void loop(){
while(!check()){
int getal = map(analogRead(pot), 0, 1023, 0, 9);
digitalWrite(pinP, HIGH);
dispChar(getal);
onEnter();
onReset();
}
Serial.println("CODE CORRECT!")
}
Thanks for the help!!
so i built a small shield for arduino mega. it has 2 red leds, 2 blue leds, 2 green leds, a buzzer, an rgb led and an IR receiver. Im trying to simulate ON and OFF with the rgb led, and when it is on you can perform actions based on the button you press on the emitter. Everything works more or less as expected but i dont know how to exit the loop on each button action. Here s my code:
int receiver = 9;
IRrecv irrecv(receiver);
decode_results results;
void translateIR()
{
switch(results.value)
{
case 0xFFA25D: power(); break;
case 0xFF30CF: button1(); break;
case 0xFF18E7: button2(); break;
case 0xFF7A85: button3(); break;
case 0xFF10EF: button4(); break;
case 0xFF38C7: button5(); break;
case 0xFF5AA5: button6(); break;
case 0xFF42BD: button7(); break;
case 0xFF4AB5: button8(); break;
case 0xFF52AD: button9(); break;
default:;
}
}
void button1()
{
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
digitalWrite(LEDB1, LOW);
digitalWrite(LEDB2, LOW);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,LOW);
do{
digitalWrite(LEDR1, HIGH);
digitalWrite(LEDR2, HIGH);
digitalWrite(LEDB1, LOW);
digitalWrite(LEDB2, LOW);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,HIGH);
delay(200);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
digitalWrite(LEDB1, HIGH);
digitalWrite(LEDB2, HIGH);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,LOW);
delay(200);
} while(1);
}
void button2()
{
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
digitalWrite(LEDB1, LOW);
digitalWrite(LEDB2, LOW);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,LOW);
do{
digitalWrite(LEDR1, HIGH);
digitalWrite(LEDR2, LOW);
digitalWrite(LEDB1, LOW);
digitalWrite(LEDB2, LOW);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,HIGH);
delay(50);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, HIGH);
digitalWrite(LEDB1, LOW);
digitalWrite(LEDB2, LOW);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,LOW);
delay(50);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
digitalWrite(LEDB1, HIGH);
digitalWrite(LEDB2, LOW);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,HIGH);
delay(50);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
digitalWrite(LEDB1, LOW);
digitalWrite(LEDB2, HIGH);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,LOW);
delay(50);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
digitalWrite(LEDB1, LOW);
digitalWrite(LEDB2, LOW);
digitalWrite(LEDG1, HIGH);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,HIGH);
delay(50);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
digitalWrite(LEDB1, LOW);
digitalWrite(LEDB2, LOW);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, HIGH);
digitalWrite(buzzer,LOW);
delay(50);
} while(1);
}
void loop() {
if (irrecv.decode(&results)) // have we received an IR signal?
{
translateIR();
irrecv.resume(); // receive the next value
}
}
With this code cannot exit the loop on button 1 and button 2 no matter wath other button i press after. So I tried adding this on the loop:
do{
digitalWrite(LEDR1, HIGH);
digitalWrite(LEDR2, HIGH);
digitalWrite(LEDB1, LOW);
digitalWrite(LEDB2, LOW);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,HIGH);
delay(200);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
digitalWrite(LEDB1, HIGH);
digitalWrite(LEDB2, HIGH);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,LOW);
delay(200);
if (irrecv.decode(&results)) // have we received an IR signal?
{
translateIR();
irrecv.resume(); // receive the next value
}
} while(1);
But still cannot exit the loop no matter what button i press. Then i tried adding this on the while:
do{
digitalWrite(LEDR1, HIGH);
digitalWrite(LEDR2, HIGH);
digitalWrite(LEDB1, LOW);
digitalWrite(LEDB2, LOW);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,HIGH);
delay(200);
digitalWrite(LEDR1, LOW);
digitalWrite(LEDR2, LOW);
digitalWrite(LEDB1, HIGH);
digitalWrite(LEDB2, HIGH);
digitalWrite(LEDG1, LOW);
digitalWrite(LEDG2, LOW);
digitalWrite(buzzer,LOW);
delay(200);
} while(!(irrecv.decode(&results)));
But it doesnt exit the loop either. Any idea?
I have a small 7 segment led display and I wondered if I could get it to show me the last digit of the minute. Downloaded the Time library for Arduino and I tried several methods, with switch case and if else if, but all give the same result, the LED display shows only 0... Could you pinpoint what I did wrong?
#include <Time.h>
#include <TimeLib.h>
int led1=2;
int led2=3;
int led3=4;
int led4=5;
int led5=6;
int led6=7;
int led7=8;
int led8=9;
void setup() {
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
pinMode(led7,OUTPUT);
pinMode(led8,OUTPUT);
}
void loop(){
time_t t=minute();
int digit1=t%10;
if(digit1==1){
digitalWrite(led5, HIGH);
digitalWrite(led3, HIGH);
}else if(digit1==2)
{
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
} else if(digit1==3)
{
digitalWrite(led4, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led2, HIGH);
}else if(digit1==4)
{
digitalWrite(led4, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led3, HIGH);
}else if(digit1==5)
{
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led2, HIGH);
}else if(digit1==6)
{
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
}else if(digit1==7)
{
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led3, HIGH);
}else if(digit1==8)
{
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
}else if(digit1==9)
{
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
}else if(digit1==0)
{
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
}
}
You never write any of the pins to go low. When the next minute hits, the proper LEDS are probably turning on, but the old ones don't go off, so you don't see any change.
To avoid turning all the LEDS off and on again every cycle, I would store the last known digit and at each loop iteration, see if the digit has changed. If it has, turn off all of the lights and then run the code you posted here.
You haven't added low conditions hence when the pin is going high it is remaining high. Also, I have checked and I think that your wiring is not correct. I'm posting complete code below and connections accordingly.
#include <Time.h>
#include <TimeLib.h>
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
int dp = 9;
void setup() {
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
pinMode(led7,OUTPUT);
pinMode(led8,OUTPUT);
}
void loop(){
time_t t=minute();
int digit1=t%10;
if(digit1==0) {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
digitalWrite(dp, LOW);
}
else if(digit1==1) {
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp, LOW);
}
else if(digit1==2) {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
else if(digit1==3) {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
else if(digit1==4) {
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
else if(digit1==5) {
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
else if(digit1==6) {
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
else if(digit1==7) {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dp, LOW);
}
else if(digit1==8) {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
else if(digit1==9) {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
digitalWrite(dp, LOW);
}
}
I build a bluetooth controled car that i have some problem with the code to it. Im using a switch case Statements to control it from my phone. The code works fine but i got a problem with the default: i want it to stop the car if it doesn't receive anything via the bluetooth. My code doesent seem to execute the default: at all. and i dont know whats the problem.
well here is my code.
int IN1 = 7;
int IN2 = 5;
int IN3 = 4;
int IN4 = 2;
int inByte = 0;
void setup() {
Serial.begin(9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop() {
//read my bluetooth
if (Serial.available() > 0) {
inByte = Serial.read();
Serial.print("I received: ");
Serial.println(inByte);
switch (inByte) {
case 'i':
Serial.println("forward");
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 'j':
Serial.println("left");
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 'l':
Serial.println("right");
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 'k':
Serial.println("reverse");
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
default:
Serial.println("stop");
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
}
}
}