Tutorial de Arduino

Hola gente del foro, soy aficionado a la electrónica, sigo el foro desde hace unos años.
Me dedico a la electricidad del automotor.:)

Desde hace un tiempo me llamaron la atención estas plaquitas llamadas Arduino, ya tengo 2 en mi poder pero resulta que hacer algo con ellas no me resulto nada fácil.:confused:
Hay infinidad de cursos en Internet pero hasta ahora no logre más que hacer destellar algunos leds.

En lo que refiere a los cursos que encontré, más o menos explican todos lo mismo basados en su mayoría en los ejemplos de la página de Arduino, hasta da la impresión de que copian y pegan, y si bien encender y apagar unos leds esta bueno, creo que se pueden lograr muchas cosas con estas plaquitas.:unsure:
Por ejemplo: explican como escribir un texto en un display, pero no sirve de mucho si no te dan una idea de como hacer un menu donde puedas seleccionar que led querés encender.:(

Me gustaría que alguien que entienda bien de esto y cuente con el tiempo suficiente pueda darnos una mano a los que queremos experimentar un poco con estas plaquitas y no tenemos conocimientos de programación.

Ojala alguien se prenda y se pueda armar un buen tuto para poder sacarle el jugo a estos chiches.;)

Desde ya muchas gracias a la gente del foro que más de una vez me ayudaron en alguna reparación y en algunas cosas que he querido armar.:):):)

Saludos. (y)
 
Quiero comunicar 2 Arduinos con 2 Xbee y estoy comenzando con Arduino también.
Una ayuda estaría bien recibida.
Llevo esto.
Código:
char dato[]={48,53,56,4,5,6};
char incomingByte = 0;    // para el byte leído
#include <LiquidCrystal.h>
LiquidCrystal lcd(4, 5, A4, 3, A5 , 2);

  //Codificamos el mensaje en una cadena de 12 posiciones
  char Str[12] = {'H', 'o', 'l', 'a', ',', ' ', 'Y','A','R','i',' ','!'};
  int posicion = 0;
  int dato2[3]= {0, 5, 8, };
//------------------------------------
//Funcion principal
//------------------------------------
 
void setup() {
 Serial.begin(9600);
  lcd.begin(16, 2);                     //Configuramos el tamaño de la LCD
} 
//------------------------------------
//Funcion ciclicla
//------------------------------------
 
void loop() {
 
  while (posicion < 12)  {              //Configuramos la estructura con la
                                        //cantidad de posiciones de la cadena
   // lcd.cursor();                       //Activamos el apuntador
    lcd.setCursor(posicion, 0);         //Rotamos las columnas
    lcd.print(Str[posicion]);           //imprimimos la posición de la cadena
    delay (500);                        //Retardo entre posiciones
    posicion++;                         //Rotamos la posición de la cadena
  }
  posicion = 0;
 while (posicion < 3)  { 
    lcd.cursor();
    lcd.setCursor(posicion, 1);
    lcd.print(dato[posicion]);
    delay (500);
     posicion++;
   }  
 
  posicion = 0;                         //Colocamos la posición de la cadena
  delay(1000);                          //Retardo de impresión del mensaje
  lcd.clear();                          //Borramos todos los datos de la lCD

      if (Serial.available() > 0) {
        // lee el byte entrante:
        incomingByte = Serial.read();
                 dato[0]=incomingByte;
                 incomingByte = Serial.read();
                 dato[1]=incomingByte;
                 incomingByte = Serial.read();
                 dato[2]=incomingByte;
        // dice lo que ha recibido:
        Serial.print("He recibido: ");
        Serial.println(incomingByte, DEC);
}
}
//Fin programa
Y sigo probando la programación.
Si alguien que sabe trabajar con Arduino para mejorar el programa y de da una mano.
Soy nuevo con esto y estoy aprendiendo.

Quiero medir un tanque de agua con un ultrasonido conectado a un Arduino y enviar la medida con un xbee y recibir con otro xbee conectado a otro Arduino que tiene un lcd 2x16 para mostrar la altura del tanque.
 

Adjuntos

  • comunicacion.txt
    2 KB · Visitas: 2
Última edición por un moderador:
bueno no es que sea arduino o no

lo que deben tener es conocimientos solidos de programacion
pues buscar ayuda en Arduino es solo limitarse a un fin muy reducido

encambio si aprenden a programar en C no como tal el C++ de PC si no solo ANSI C aprenderan muchas cosas utiles

pues armar un menu, comparaciones , tiempos, maquina de estados, sistemas multieventos , leer ,imprimir , guardar un archivo ,etc.

es algo muy basico del lenguaje C.

yo recomendaria que estudiaran temas de C no de C++ pues eso es un poco mas especifico ni C# no por que sea mas moderno si no lo que IMPORTA es el aprender a programar

saludos ;)
 
Hola a todos.

adrian_escolar dijo:
Por ejemplo: explican como escribir un texto en un display, pero no sirve de mucho si no te dan una idea de como hacer un menu donde puedas seleccionar que led querés encender.

Aquí tienes muchos ejemplos sobre el manejo del LCD en Arduino. El enlace te lleva directamente a uno donde utiliza un menú (con submenús, bastante elaborado). Léelo todo desde el principio porque igual no utiliza la misma LCD que tú tienes.

adrian_escolar dijo:
Ojala [...] se pueda armar un buen tuto para poder sacarle el jugo a estos chiches

Los hay a patadas. Buenos y malos. Y para todo tipo de aplicación. Se trata de saber buscar.

fen2006 dijo:
Quiero medir un tanque de agua con un ultrasonido conectado a un Arduino y enviar la medida con un xbee y recibir con otro xbee conectado a otro Arduino que tiene un lcd 2x16 para mostrar la altura del tanque.

Para xbee, igual esto te resulta interesante (partes 1 a 4).
Para el uso de la LCD, te remito al enlace que le he puesto a adrian_escolar.
Para el uso del ultrasonidos, este enlace supongo que va genial.

TRILO-BYTE dijo:
encambio si aprenden a programar en C no como tal el C++ de PC si no solo ANSI C aprenderan muchas cosas utiles
[...]
yo recomendaria que estudiaran temas de C no de C++ pues eso es un poco mas especifico ni C# no por que sea mas moderno si no lo que IMPORTA es el aprender a programar

Si lo que importa es aprender a programar, no es buena idea limitar a la gente lo que puede aprender. C# es más moderno y tiene cosas muy interesantes y pontentes, aunque personalmente no me gusta y prefiero usar (como "equivalente") Java. Eso sí, para programar microcontroladores, ninguno de los dos (no es que no se pueda, pero es complicarse la vida por la dificultad de encontrar herramientas y por la poca potencia de los micros de 8 bits).
En cuanto a C++, para nada es "específico". Es una ampliación de C principalmente para dar soporte al manejo de objetos (cosa tremendamente útil). No es solo para PC, ya que al igual que C es muy óptimo y va genial en microcontroladores.

Pero para empezar a programar, lo cierto es que casi da igual cuál lenguaje utilices para aprender. El primero que aprendí yo fue Object Pascal (Pascal orientado a objetos, Delphi), haciendo aplicaciones para PC, y fue una maravilla. Luego me tocó aprender C y C++, y me resultó mucho más fácil que a otras personas que aprendían conmigo, porque yo ya sabía programar. Luego quise programar microcontroladores (PIC concretamente), y sólo había una herramienta no muy desarrollada para programarlos en Pascal, así que tuve que seguir con C, y aprender ensamblador (y ojo con ensamblador, que para cada arquitectura es completamente diferente). Tiempo después salieron los Arduino, y los quise probar, y vi que se programaban en C++.

Al final aprendes las estrategias para programar (que es lo que te hace habilidoso), y escribirlas en uno u otro lenguaje importa poco.

TRILO-BYTE dijo:
lo que deben tener es conocimientos solidos de programacion

Exacto ;)
Primero que los consigan (¿con Arduino? ¡Pues con Arduino!) y después que prueben y aprendan otras cosas, y que usen las que más les gusten.
También es importante tener conocimientos sólidos sobre cómo buscar cosas en internet. Los temas básicos y de aprendizaje de todas las cosas ya se han hablado en todos los sitios en todos los idiomas. Solo hay que hacer la pregunta adecuada, y no conformarse con la primera respuesta.


Saludos!



Ah! se me olvidaba.

fen2006, para declarar cadenas de texto, por comodidad y correción te recomiendo esta forma:

Código:
char Str[] = "Hola, YARi !";
El resto de tu cógido funcionará exactamente igual. Y si quieres mandar una cadena entera, no hace falta que la mandes caracter a caracter, puedes hacer esto directamente:
Código:
lcd.setCursor(0, 0);
lcd.print(Str);
en lugar de esto
Código:
while (posicion < 12)  {              //Configuramos la estructura con la
                                        //cantidad de posiciones de la cadena
   // lcd.cursor();                       //Activamos el apuntador
    lcd.setCursor(posicion, 0);         //Rotamos las columnas
    lcd.print(Str[posicion]);           //imprimimos la posición de la cadena
    delay (500);                        //Retardo entre posiciones
    posicion++;                         //Rotamos la posición de la cadena
  }

Pero pierdes el efecto del retardo, claro, jeje.
 
Última edición:
gracias por lo que me toca y por la ayuda, bueno el programa que que subí es un ejemplo que encontré y que modifique para hacer las practicas todavía no he hecho un programa completo por mi mismo solo empates de ejemplo que encuentro.
en estos momentos estoy recibiendo datos de monitor serial para mostrarlo en el LCD y después le conecto el xbee.
las practicas con el xbee,LDC y ultrasonido ya las hice, ahora estoy por unirlas de hecho el medidor de tanque por ultrasonido tiene un mes trabajando pero con 3 display.
 
Atrás
Arriba