Lab_interaccio/2010/Ricardo/robot_test/applet/robot_test.cpp

239 lines
4.1 KiB
C++
Raw Normal View History

2025-02-25 21:29:42 +01:00
#include "WProgram.h"
void setup();
void loop();
int IR = 6;
int zumbador = 8;
int camara = 11;
int bit1 = 0;
int bit2 = 1;
int bit3 = 2;
int bit4 = 3;
int val1 = 0;
int val2 = 0;
int val3 = 0;
int val4 = 0;
byte val = 0;
int speed1 = 9;
int speed2 = 10;
int g1a = 2;
int g1b = 3;
int g2a = 5;
int g2b = 4;
int id = 0;
/*void stop()
{
digitalWrite(g1a, LOW);
digitalWrite(g1b, LOW);
analogWrite(speed1, 0);
digitalWrite(g2a, LOW);
digitalWrite(g2b, LOW);
analogWrite(speed2, 0);
}
void izquierda(int iz)
{
stop();
delay(100);
digitalWrite(g1a, HIGH);
digitalWrite(g1b, LOW);
digitalWrite(g2a, LOW);
digitalWrite(g2b, LOW);
analogWrite(speed2, 0);
for (int i=64; i <= iz; i=i+10){
analogWrite(speed1, i);
delay(100);
}
analogWrite(speed1, iz);
}
void derecha(int der)
{
stop();
delay(100);
digitalWrite(g2a, HIGH);
digitalWrite(g2b, LOW);
digitalWrite(g1a, LOW);
digitalWrite(g1b, LOW);
analogWrite(speed1, 0);
for (int i=64; i <= der; i=i+10){
analogWrite(speed2, i);
delay(100);
}
analogWrite(speed2, der);
}
void retrocede(int av)
{
stop();
delay(100);
digitalWrite(g2a, HIGH);
digitalWrite(g2b, LOW);
digitalWrite(g1a, HIGH);
digitalWrite(g1b, LOW);
for (int i=64; i <= av; i=i+10){
analogWrite(speed1, i);
analogWrite(speed2, i);
delay(100);
}
analogWrite(speed2, av);
analogWrite(speed1, av);
}
void avanza(int re)
{
stop();
delay(100);
digitalWrite(g2a, LOW);
digitalWrite(g2b, HIGH);
digitalWrite(g1a, LOW);
digitalWrite(g1b, HIGH);
for (int i=64; i <= re; i=i+10){
analogWrite(speed1, i);
analogWrite(speed2, i);
delay(100);
}
analogWrite(speed2, re);
analogWrite(speed1, re);
} */
void setup()
{
Serial.begin(9600);
delay(100);
pinMode(IR, OUTPUT);
pinMode(zumbador, OUTPUT);
pinMode(camara, OUTPUT);
pinMode(14, INPUT);
pinMode(15, INPUT);
pinMode(16, INPUT);
pinMode(17, INPUT);
digitalWrite(14, HIGH);
digitalWrite(15, HIGH);
digitalWrite(16, HIGH);
digitalWrite(17, HIGH);
if (analogRead(bit1)>512) val1=16;
else val1=0;
if (analogRead(bit2)>512) val2=32;
else val2=0;
if (analogRead(bit3)>512) val3=64;
else val3=0;
if (analogRead(bit4)>512) val4=128;
else val4=0;
id=val1+val2+val3+val4;
Serial.print("Hola, soy el robot numero ");
Serial.println(id);
}
void loop()
{
//digitalWrite(camara, HIGH);
if (Serial.available()) {
val = Serial.read();
//Serial.print(val, BYTE);
Serial.print(val);
}
/*if (Serial.available()) {
val = Serial.read();
Serial.print(val, BYTE);
if ((val&0xF0)==id)
{
Serial.print(val, BYTE);
switch (val&0x0F) {
case 0x00:
avanza(255);
break;
case 0x01:
retrocede(255);
break;
case 0x02:
{
izquierda(255);
derecha(0);
}
break;
case 0x03:
{
derecha(255);
izquierda(0);
}
break;
case 0x04:
{
derecha(180);
izquierda(255);
}
break;
case 0x05:
{
derecha(128);
izquierda(255);
}
break;
case 0x06:
{
derecha(80);
izquierda(255);
}
break;
case 0x07:
{
derecha(64);
izquierda(255);
}
break;
case 0x08:
{
izquierda(180);
derecha(255);
}
break;
case 0x09:
{
izquierda(128);
derecha(255);
}
break;
case 0x0A:
{
izquierda(80);
derecha(255);
}
break;
case 0x0B:
{
izquierda(64);
derecha(255);
}
break;
case 0x0C:
stop();
break;
case 0x0D:
digitalWrite(camara, HIGH);
break;
case 0x0E:
digitalWrite(camara, LOW);
break;
}
}
}*/
}
int main(void)
{
init();
setup();
for (;;)
loop();
return 0;
}