//Include the SoftwareSerial library
//Definição dos pinos de controle do motor
define M1 5 // PinoVelocidade 1º Motor ( 0 a 255) Porta IN2 ponte H;
define M2 6 //PinoVelocidade 2º Motor ( 0 a 255) Porta IN4 ponte H;
define dir1 4 //PinoDireção do 1º Motor: Para frente / Para trás (HIGH ou LOW) porta IN1 ponte H;
define dir2 7 //PinoDireção do 2º Motor: Para frente / Para trás (HIGH ou LOW) porta IN3 ponte H;
//Definição dos pinos dos sensores
define pin_S1 3
define pin_S2 12
bool Sensor1 = 0;
bool Sensor2 = 0;
//variável responsável por controlar a velocidade dos motores
int velocidade = 150;
void setup(){
//Setamos os pinos de controle dos motores como saída
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
pinMode(dir1, OUTPUT);
pinMode(dir2, OUTPUT);
//Setamos a direção inicial do motor como 0, isso fará com que ambos os motores girem para frente
digitalWrite(dir1, LOW);
digitalWrite(dir2, LOW);
//Setamos os pinos dos sensores como entrada
pinMode(pin_S1, INPUT);
pinMode(pin_S2, INPUT);
}
void loop(){
//Neste processo armazenamos o valor lido pelo sensor na variável que armazena tais dados.
Sensor1 = digitalRead(pin_S1);
Sensor2 = digitalRead(pin_S2);
//Aqui está toda a lógica de comportamento do robô: Para a cor branca atribuímos o valor 0 e, para a cor preta, o valor 1.
if((Sensor1 == 0) && (Sensor2 == 0)){ // Se detectar na extremidade das faixas duas cores brancas
analogWrite(M1, velocidade); // Ambos motores ligam na mesma velocidade
analogWrite(M2, velocidade);
}
if((Sensor1 == 1) && (Sensor2 == 0)){ // Se detectar um lado preto e o outro branco
analogWrite(M1, 0); // O motor 1 desliga
analogWrite(M2, velocidade); // O motor 2 fica ligado, fazendo assim o carrinho virar
}
if((Sensor1 == 0) && (Sensor2 == 1)){ // Se detectar um lado branco e o outro preto
analogWrite(M1, velocidade); //O motor 1 fica ligado
analogWrite(M2, 0); // O motor 2 desliga, fazendo assim o carrinho virar no outro sentido
}
}
//Create a new software serial
SoftwareSerial bluetooth(8, 9); //TX, RX (Bluetooth)
void setup() {
//Initialize the hardware serial
Serial.begin(9600);
Serial.println(F("Type the AT commands:"));
//Initialize the software serial
bluetooth.begin(9600);
}
void loop() {
//Check received a byte from hardware serial
if (Serial.available()) {
char r = Serial.read(); //Read and save the byte
bluetooth.print(r); //Send the byte to bluetooth by software serial
Serial.print(r); //Echo
}
//Check received a byte from bluetooth by software serial
if (bluetooth.available()) {
char r = bluetooth.read(); //Read and save the byte
Serial.print(r); //Print the byte to hardware serial
}
}
//Include the SoftwareSerial library //Definição dos pinos de controle do motor
define M1 5 // PinoVelocidade 1º Motor ( 0 a 255) Porta IN2 ponte H;
define M2 6 //PinoVelocidade 2º Motor ( 0 a 255) Porta IN4 ponte H;
define dir1 4 //PinoDireção do 1º Motor: Para frente / Para trás (HIGH ou LOW) porta IN1 ponte H;
define dir2 7 //PinoDireção do 2º Motor: Para frente / Para trás (HIGH ou LOW) porta IN3 ponte H;
//Definição dos pinos dos sensores
define pin_S1 3
define pin_S2 12
bool Sensor1 = 0; bool Sensor2 = 0; //variável responsável por controlar a velocidade dos motores int velocidade = 150; void setup(){ //Setamos os pinos de controle dos motores como saída pinMode(M1, OUTPUT); pinMode(M2, OUTPUT); pinMode(dir1, OUTPUT); pinMode(dir2, OUTPUT); //Setamos a direção inicial do motor como 0, isso fará com que ambos os motores girem para frente digitalWrite(dir1, LOW); digitalWrite(dir2, LOW); //Setamos os pinos dos sensores como entrada pinMode(pin_S1, INPUT); pinMode(pin_S2, INPUT); } void loop(){ //Neste processo armazenamos o valor lido pelo sensor na variável que armazena tais dados. Sensor1 = digitalRead(pin_S1); Sensor2 = digitalRead(pin_S2); //Aqui está toda a lógica de comportamento do robô: Para a cor branca atribuímos o valor 0 e, para a cor preta, o valor 1. if((Sensor1 == 0) && (Sensor2 == 0)){ // Se detectar na extremidade das faixas duas cores brancas analogWrite(M1, velocidade); // Ambos motores ligam na mesma velocidade analogWrite(M2, velocidade); } if((Sensor1 == 1) && (Sensor2 == 0)){ // Se detectar um lado preto e o outro branco analogWrite(M1, 0); // O motor 1 desliga analogWrite(M2, velocidade); // O motor 2 fica ligado, fazendo assim o carrinho virar } if((Sensor1 == 0) && (Sensor2 == 1)){ // Se detectar um lado branco e o outro preto analogWrite(M1, velocidade); //O motor 1 fica ligado analogWrite(M2, 0); // O motor 2 desliga, fazendo assim o carrinho virar no outro sentido } }
void frente() { digitalWrite(dir1, HIGH);
digitalWrite(dir2, HIGH); delay(tmp);
}
void re() { digitalWrite(motor1H, LOW);
digitalWrite(motor1L, HIGH); digitalWrite(motor2H, LOW);
digitalWrite(motor2L, HIGH); delay(tmp); }
void direita() { digitalWrite(motor1H, LOW);
digitalWrite(motor1L, HIGH); digitalWrite(motor2H, HIGH);
digitalWrite(motor2L, LOW); delay(tmp); }
void esquerda() { digitalWrite(motor1H, HIGH);
digitalWrite(motor1L, LOW); digitalWrite(motor2H, LOW);
digitalWrite(motor2L, HIGH); delay(tmp); }
void pare() { digitalWrite(motor1H, LOW);
digitalWrite(motor1L, LOW); digitalWrite(motor2H, LOW);
digitalWrite(motor2L, LOW); delay(tmp); }
include "SoftwareSerial.h"
//Create a new software serial SoftwareSerial bluetooth(8, 9); //TX, RX (Bluetooth)
void setup() { //Initialize the hardware serial Serial.begin(9600); Serial.println(F("Type the AT commands:"));
//Initialize the software serial bluetooth.begin(9600); }
void loop() { //Check received a byte from hardware serial if (Serial.available()) { char r = Serial.read(); //Read and save the byte bluetooth.print(r); //Send the byte to bluetooth by software serial Serial.print(r); //Echo } //Check received a byte from bluetooth by software serial if (bluetooth.available()) { char r = bluetooth.read(); //Read and save the byte Serial.print(r); //Print the byte to hardware serial } }