Autor
|
Tema: Ayuda con arduino robot de sumos URGE por favor (Leído 5,392 veces)
|
UsamaEK
Desconectado
Mensajes: 14
|
Hola, querria saber si alguien podria hacer un codigo con el lenguaje que usa arduino (derivacion de c++)para hacer un robot de sumo es para el colegio y urge un poco. Lo que tiene que hacer el robot es lo siguiente que hace este video: https://www.youtube.com/watch?v=zW4fSSlaZ-8que por los sensores detecte la linea blanca para que no se salga y que si ve un objetivo lo empuje hasta sacarlo del 'ring' sin que salga el. Ya se que la la mayoria del foro que saben programacion son hackers y que les gusta ayudar dando pistas para que los nobatos como yo aprendamos y la verdad lo agradezco mucho por que he aprendido muchas cosas en este foro pero es que esto es para el colegio y no tengo ni idea de arduino si el lenguaje de arduiono no deberia estar en este subforo avisadme y gracias
|
|
|
En línea
|
|
|
|
engel lex
|
prohibido solicitar códigos hechos
si tienes una duda especifica sobre un tema puntual, eres libre de publicarla y dar más detalle... no se cuales son los robot sumos URGE, pero si das detalle se te puede ayudar
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
UsamaEK
Desconectado
Mensajes: 14
|
Los robot de sumo son unos robot que funcionan con una placa de arduino. Tan solo tiene dos funciones: 1.- Detectar el color blanco para no tocarlo 2.- Empujar todo objeto que se encuentre dentro del radio de los sensores. Eso es lo que debe hacer el codigo pero he buscado en el foro y no hay temas sobre el lenguaje de arduino se que es un derivado de lenguaje c++.
|
|
|
En línea
|
|
|
|
engel lex
|
no has conseguido nada específicamente sobre el robot, sus sensores y como usarlos? sabes algo de C para poder programar?
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
UsamaEK
Desconectado
Mensajes: 14
|
Sobre los sensores los tengo y se montarlos ya que sobre el tema del hardware no tengo problemas el problema es que necesito saber el como hacer el codigo. Se algo de lenguaje C pero no mucho estoy apenas comenzando con el code blocs.He sacado algunos codigos y los que he visto que parecen estar bien los he moificado donde creia un fallo el codigo que he usado es este:
void setup() { void setup() { { pinMode (motorR1, OUTPUT); pinMode (motorR2, OUTPUT); pinMode (motorL1, OUTPUT); pinMode (motorL2, OUTPUT); pinMode (sensFder, INPUT); pinMode (sensFizq, INPUT); pinMode (sensTder, INPUT); pinMode (sensTizq, INPUT); }
}
void loop() { { float buf1, buf2, valord, valort; valord=analogRead(sensDel); valort=analogRead(sensTras); buf1=valord*500/1024; buf2=valort*500/1024;
if(buf1 >= 480) { atras(); izquierda(); delay(400); atras(); }
if(buf2 >= 480) { adelante(); izquierda(); delay(400); adelante(); }
if(digitalRead (sensFder)==HIGH ) { golpeFder(); }
if(digitalRead (sensFizq)==HIGH) { golpeFizq(); }
if(digitalRead (sensTder)==HIGH) { golpeTder(); }
if(digitalRead (sensTizq)==HIGH) { golpeTizq(); }
}
int adelante() { digitalWrite (motorR1, LOW); digitalWrite (motorR2, HIGH); digitalWrite (motorL1, HIGH); digitalWrite (motorL2, LOW); }
int atras() { digitalWrite (motorR1, HIGH); digitalWrite (motorR2, LOW); digitalWrite (motorL1, LOW); digitalWrite (motorL2, HIGH); }
int izquierda() { digitalWrite (motorR1, LOW); digitalWrite (motorR2, HIGH); digitalWrite (motorL1, LOW); digitalWrite (motorL2, HIGH); delay(100); }
int derecha() { digitalWrite (motorR1, HIGH); //L digitalWrite (motorR2, LOW); digitalWrite (motorL1, HIGH); digitalWrite (motorL2, LOW);//L delay(100); }
int golpeFder() { atras(); delay(1000); derecha(); delay(300); adelante(); }
int golpeFizq() { atras(); delay(1000) ; izquierda(); delay(300); adelante(); }
int golpeTder() { adelante(); delay(1000); izquierda(); delay(300); atras(); }
int golpeTizq() { adelante(); delay(1000); derecha(); delay(300); atras(); }
Y el erro que me da es este: Arduino: 1.5.8 (Windows 7), Placa:"Arduino Uno"
sketch_oct03b.ino: In function 'void setup()': sketch_oct03b.ino:4:10: error: 'motorR1' was not declared in this scope sketch_oct03b.ino:5:10: error: 'motorR2' was not declared in this scope sketch_oct03b.ino:6:10: error: 'motorL1' was not declared in this scope sketch_oct03b.ino:7:10: error: 'motorL2' was not declared in this scope sketch_oct03b.ino:8:10: error: 'sensFder' was not declared in this scope sketch_oct03b.ino:9:10: error: 'sensFizq' was not declared in this scope sketch_oct03b.ino:10:10: error: 'sensTder' was not declared in this scope sketch_oct03b.ino:11:10: error: 'sensTizq' was not declared in this scope sketch_oct03b.ino: In function 'void loop()': sketch_oct03b.ino:20:19: error: 'sensDel' was not declared in this scope sketch_oct03b.ino:21:19: error: 'sensTras' was not declared in this scope sketch_oct03b.ino:42:17: error: 'sensFder' was not declared in this scope sketch_oct03b.ino:47:17: error: 'sensFizq' was not declared in this scope sketch_oct03b.ino:52:17: error: 'sensTder' was not declared in this scope sketch_oct03b.ino:57:17: error: 'sensTizq' was not declared in this scope sketch_oct03b.ino:65:1: error: a function-definition is not allowed here before '{' token sketch_oct03b.ino:73:1: error: a function-definition is not allowed here before '{' token sketch_oct03b.ino:81:1: error: a function-definition is not allowed here before '{' token sketch_oct03b.ino:90:1: error: a function-definition is not allowed here before '{' token sketch_oct03b.ino:99:1: error: a function-definition is not allowed here before '{' token sketch_oct03b.ino:108:1: error: a function-definition is not allowed here before '{' token sketch_oct03b.ino:117:1: error: a function-definition is not allowed here before '{' token sketch_oct03b.ino:126:1: error: a function-definition is not allowed here before '{' token sketch_oct03b.ino:132:1: error: expected '}' at end of input Error de compilación
This report would have more information with "Show verbose output during compilation" enabled in File > Preferences.
|
|
|
En línea
|
|
|
|
engel lex
|
usa las etiquetas GeSHi cuando publiques codigo (usa lenguaje C) el error que te da eso bien te lo dice primero sketch_oct03b.ino:4:10: error: 'motorR1' was not declared in this scope sketch_oct03b.ino:5:10: error: 'motorR2' was not declared in this scope sketch_oct03b.ino:6:10: error: 'motorL1' was not declared in this scope sketch_oct03b.ino:7:10: error: 'motorL2' was not declared in this scope sketch_oct03b.ino:8:10: error: 'sensFder' was not declared in this scope sketch_oct03b.ino:9:10: error: 'sensFizq' was not declared in this scope sketch_oct03b.ino:10:10: error: 'sensTder' was not declared in this scope sketch_oct03b.ino:11:10: error: 'sensTizq' was not declared in this scope es decir en la linea 5 usas pinMode (motorR1, OUTPUT);
pero, en que pin está motorR1, es decir, no le estás dando un numero que lo guíe, primero debes definir todas esas variables con numero reales, ej si motorR1 es pin 1 int motorR1 = 1;
el segundo error (que hace que se lancen los otros es void loop() { {
esa segunda llave abierta "{" genera los conflictos y tambien la doble declaracion de setup corrige eso e intenta nuevamente
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
UsamaEK
Desconectado
Mensajes: 14
|
Engel lex gracias a tus consejos ya he sacado un codigo que esta verificado y compilado ahora tan solo lo debere usar en la placa este lunes y disfrutar, ya que teoricamente funciona. Lo paso por si a alguien quiere darme otra idea, ya funciona pero el ser humano busca la perfeccion inexistente. int motorR1 = 3; int motorR2 = 4; int motorL1 = 5; int motorL2 = 6; int sensFder = 7; int sensFizq = 8; int sensTder = 9; int sensTizq = 10; int sensDel = 0; int sensTras = 1;
void setup() {
pinMode (motorR1, OUTPUT); pinMode (motorR2, OUTPUT); pinMode (motorL1, OUTPUT); pinMode (motorL1, OUTPUT); pinMode (sensFder, INPUT); pinMode (sensFizq, INPUT); pinMode (sensTder, INPUT); pinMode (sensTizq, INPUT); }
void loop() {
float buf1, buf2, valord, valort; valord = analogRead(sensDel); valort = analogRead(sensTras); buf1 = valord * 500 / 1024; buf2 = valort * 500 / 1024;
if (buf1 >= 480) { atras(); izquierda(); delay(400); atras(); }
if (buf2 >= 480) { adelante(); izquierda(); delay(400); adelante(); }
if (digitalRead (sensFder) == HIGH ) { golpeFder(); }
if (digitalRead (sensFizq) == HIGH) { golpeFizq(); }
if (digitalRead (sensTder) == HIGH) { golpeTder(); }
if (digitalRead (sensTizq) == HIGH) { golpeTizq(); }
}
int adelante() { digitalWrite (motorR1, LOW); digitalWrite (motorR2, HIGH); digitalWrite (motorL1, HIGH); digitalWrite (motorL2, LOW); }
int atras() { digitalWrite (motorR1, HIGH); digitalWrite (motorR2, LOW); digitalWrite (motorL1, LOW); digitalWrite (motorL2, HIGH); }
int izquierda() { digitalWrite (motorR1, LOW); digitalWrite (motorR2, HIGH); digitalWrite (motorL1, LOW); digitalWrite (motorL2, HIGH); delay(100); }
int derecha() { digitalWrite (motorR1, HIGH); //L digitalWrite (motorR2, LOW); digitalWrite (motorL1, HIGH); digitalWrite (motorL2, LOW);//L delay(100); }
int golpeFder() { atras(); delay(1000); derecha(); delay(300); adelante(); }
int golpeFizq() { atras(); delay(1000) ; izquierda(); delay(300); adelante(); }
int golpeTder() { adelante(); delay(1000); izquierda(); delay(300); atras(); }
int golpeTizq() { adelante(); delay(1000); derecha(); delay(300); atras(); }
PD: Te vuelvo a dar las gracias.
|
|
|
En línea
|
|
|
|
Minusfour_cierralo_o_baneamefull
Desconectado
Mensajes: 571
|
Si quieres pulir un poco mas, la función delay intenta evitarla, la razón es que paraliza todo el programa y podrías ejecutar otras cosas y ser mas veloz. Para sustituirlo bastaría con esto: long interval = 500; //aqui pones los milisegundos void loop(){ if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; accion>>>poner acciones } }
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda: Arduino + java
Electrónica
|
carepapa
|
1
|
5,264
|
29 Noviembre 2011, 03:59 am
por carepapa
|
|
|
Necessito ayuda con Arduino
Electrónica
|
eda6
|
2
|
4,461
|
28 Enero 2013, 07:08 am
por Falso Positivo
|
|
|
Duda con Arduino. Urgente por favor.
Dudas Generales
|
SARGE553413
|
2
|
2,119
|
9 Julio 2013, 04:57 am
por engel lex
|
|
|
me urge por favor
Programación C/C++
|
cridve
|
1
|
1,994
|
15 Febrero 2019, 12:39 pm
por EdePC
|
|
|
me urge por favor
Programación C/C++
|
cridve
|
1
|
2,284
|
29 Marzo 2019, 09:02 am
por K-YreX
|
|