0% encontró este documento útil (0 votos)
138 vistas5 páginas

Código Arduino para Coche RC

Este código controla un auto Arduino mediante comandos seriales. Declara pines para motores, servos y un sensor de distancia. En el bucle principal, lee comandos seriales y ejecuta acciones como avanzar, girar, medir distancia. Usa servos y motores conectados a pines de salida para controlar la dirección y movimiento.

Cargado por

Laura Cardenas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
138 vistas5 páginas

Código Arduino para Coche RC

Este código controla un auto Arduino mediante comandos seriales. Declara pines para motores, servos y un sensor de distancia. En el bucle principal, lee comandos seriales y ejecuta acciones como avanzar, girar, medir distancia. Usa servos y motores conectados a pines de salida para controlar la dirección y movimiento.

Cargado por

Laura Cardenas
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

#include <Servo.

h>
/**
* Elextro-Tex
* Arduino Car - Codigo de ejemplo
* Control Serial
*/

// Declaramos los pines a usar


int PIN_SERVO_A = 2;
int PIN_SERVO_B = 3;

//Pin para llanta de la izquierda


int PIN_IN1 = 7;
int PIN_IN2 = 6;

//Pin para llanta de la derecha


int PIN_IN3 = 8;
int PIN_IN4 = 9;

//Pin para el led/foco


int PIN_LED = 5;

//Pin HC-SR04
int PIN_ECHO = 10;
int PIN_TRIG = 11;

//Declaramos los servos


Servo servoA;
Servo servoB;

void setup() {

// inicializar la comunicación serial a 9600 bits por segundo


[Link](9600);
[Link](5);

// Configuramos los pines como salida


pinMode(PIN_IN1, OUTPUT);
pinMode(PIN_IN2, OUTPUT);
pinMode(PIN_IN3, OUTPUT);
pinMode(PIN_IN4, OUTPUT);

// Configuramos los servos


[Link](PIN_SERVO_A);
[Link](PIN_SERVO_B);

// Configuramos el led
pinMode(PIN_LED, OUTPUT);

// Configuramos sensor de distancia


pinMode(PIN_TRIG, OUTPUT); // Sets the trigPin as an Output
pinMode(PIN_ECHO, INPUT);

void loop() {

char codigo;
String valor = "";

while ([Link]() > 0) { // Preguntamos si existe datos leidos por serial


String linea = [Link]();
for(int i = 0 ;i < [Link](); i++){
int caracter = linea[i];
if (isDigit(caracter)) { // Preguntamos si es digito
valor += (char)caracter; // Guardamos el valor leido
}else if (caracter != '\n') { // Preguntamos si es distinto a salto de linea
codigo = caracter; // Guardamos el codigo leido
}else{
break;
}
}
}

switch(codigo){
case 'A': avanzar(); break;
case 'I': izquierda(); break;
case 'R': retroceder();break;
case 'D': derecha(); break;
case 'P': parar(); break;
case 'T': encenderLed();break;
case 't': apagarLed(); break;
case 'M':
if(valor!=""){
girarServoA([Link]());
}
break;
case 'N':
if(valor!=""){
girarServoB([Link]());
}
break;
}

[Link]("D");
[Link](medirDistancia());

delay(10);
}

long medirDistancia(){
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(5);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);

long duration = pulseIn(PIN_ECHO, HIGH);

return microsecondsToCentimeters(duration);
}

long microsecondsToCentimeters (long microseconds) {


return microseconds / 29 / 2;
}

void encenderLed(){
digitalWrite(PIN_LED, HIGH);
}
void apagarLed(){
digitalWrite(PIN_LED, LOW);
}
void girarServoA(int grados){
[Link](grados);
}

void girarServoB(int grados){


[Link](grados);
}
void avanzar(){
//Avanza llantas de la izquierda
digitalWrite (PIN_IN1, HIGH);
digitalWrite (PIN_IN2, LOW);
//Avanza llantas de la derecha
digitalWrite (PIN_IN3, HIGH);
digitalWrite (PIN_IN4, LOW);
}
void retroceder(){
//Retrocede llantas de la izquierda
digitalWrite (PIN_IN1, LOW);
digitalWrite (PIN_IN2, HIGH);
//Retrocede llantas de la derecha
digitalWrite (PIN_IN3, LOW);
digitalWrite (PIN_IN4, HIGH);
}

void parar(){
//Para llanas de la izquierda
digitalWrite (PIN_IN1, LOW);
digitalWrite (PIN_IN2, LOW);
//Para llanas de la derecha
digitalWrite (PIN_IN3, LOW);
digitalWrite (PIN_IN4, LOW);
}

void izquierda(){
//Rertocede llantas de la izquierda
digitalWrite (PIN_IN1, LOW);
digitalWrite (PIN_IN2, HIGH);
//Avanza llantas de la derecha
digitalWrite (PIN_IN3, HIGH);
digitalWrite (PIN_IN4, LOW);
}

void derecha(){
//Retrocede llantas de la derecha
digitalWrite (PIN_IN3, LOW);
digitalWrite (PIN_IN4, HIGH);
//Avanza llantas de la izquierda
digitalWrite (PIN_IN1, HIGH);
digitalWrite (PIN_IN2, LOW);
}

También podría gustarte