Introducción a ARDUINO. J. Carlos Ferrer Hernández Universidad de Cádiz HTTP://www.electronicacreativauca.tk http://www.facebook.com/UCACrealab http://www.uca.es/grupos-inv/TEP150 Hello World!! Encender un Led con Arduino(blink) ● Programación Estructura del código ● Variables globales y librerías ● Setup: donde inicializamos y configuramos todo ● Loop Principal:bucle principal donde están todas las acciones ● (Funciones) opcional Programación Crear Programa ● Diagrama de flujo: Representación gráfica del algoritmo del software. Proceso ● condición contador bloque http://www.yworks.com/en/products_yed_about.html Programación Ejercicios diagramas de flujo ● Encender un Led ● Encender un Led con 5 parpadeos ● Encender un led si se aprieta un botón Arduino Características Técnicas ● Basada en la familia ATMEGA – Arduino UNO 14 I/O Digitales 6 I/O analógicas 6 PWM – Arduino MEGA 54 I/O Digitales 16 I/O analógicas 15 PWM Micro controlador PLACA ARDUINO Programación Relación entre señal electrónica digital y sistema binario ● Las señales digitales tienen dos estados posibles: ● Alto = 1= verdad= 5v ● Bajo= 0= Falso= 0v Programación Crear Programa ● Esquema de bloques Hardware,es el primer esquema que debemos realizar en el que reflejaremos las entradas y salidas de nuestro proyecto.(los podemos generar con fritzing) Hello World!! Encender un Led con Arduino(blink) ● void setup() {} ● void loop() {} ● pinMode (Pin, OUTPUT/INPUT); ● digitalWrite(Pin, HIGH/LOW); ● delay(número de mseg); Hello World!! Encender un Led con Arduino(blink) int led = 13; ////////////////////////////// configurar pin 13 como salida /////////////////////////////////////////// void setup() { pinMode(led, OUTPUT); } ///////////////////////////// Bucle principal //////////////////////////////////////////// void loop() { digitalWrite(led, HIGH); // escribir uno lógico(5v) delay(1000); // esperar 1 seg digitalWrite(led, LOW); // escribir cero lógico (0v) delay(1000); } // Esperar 1 segundo Practica 2 Lectura digital Encender un led cuando presionamos un botón y apagarlo cuando el botón este relajado Practica 2 Lectura digital ● if (condición) { Código; } else { Código; } ● digitalRead(); variable = digitalRead(Pin); Practica 2 Lectura digital const int buttonPin = 2; // the number of the pushbutton pin const int ledPin = 13; // the number of the LED pin int buttonState = 0; // variable for reading the pushbutton status void setup() { // el pin del led es salida pinMode(ledPin, OUTPUT); // el pin del boton es entrada pinMode(buttonPin, INPUT); Practica 2 void loop(){ // leer el botón buttonState = digitalRead(buttonPin); // si vale 1, enciende if (buttonState == HIGH) { digitalWrite(ledPin, HIGH); } // si vale 0,apaga else { digitalWrite(ledPin, LOW); } Practica 3 Lectura analógica leer el valor de un potenciómetro e imprimirlo en el monitor serie Practica4 Lectura analógica ● ● ● analogRead(pin); map(valor entrada min,valor entrada max,valor salida min,valor salida max); constrain(variable,minimo,maximo); Practica4 ● Monitor Serie ● Serial.begin(9600); ● Serial.print(“lo que sea” 'c' valor); Practica4 Lectura analógica const int analogInPin = A0; const int analogOutPin = 9; int sensorValue = 0; // variable donde guardamos el valor leído por el potenciómetro int outputValue = 0; // variable donde guardamos el valor que le vamos a escribir al PWM del Led void setup() { // initialize serial communications at 9600 bps: Serial.begin(9600); } Practica4 Lectura analógica void loop() { //leer el valor del portenciometro sensorValue = analogRead(analogInPin); // cambiarle el rango dentro de la variable de salida outputValue = map(sensorValue, 0, 1023, 0, 255); // escribir el PWM analogWrite(analogOutPin, outputValue); // pimprimir los resultados en el monitor serie: Serial.print("sensor = " ); Serial.print(sensorValue); Serial.print("\t output = "); Serial.println(outputValue); // esperar 10 millis delay(10); } para estabilizar el conversor analogico digital Practica 4 PWM Encender y apagar un led regulando la intensidad poco a poco Practica3 PWM ● for(variable =x; condición; actualizacion de variable){ Código; } ● analogWrite(pin,valor); Practica3 PWM const int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); } void loop() { // fade the LED off to on: for (int brightness = 0; brightness < 255; brightness++) { analogWrite(ledPin, brightness); delay(2); } Practica3 PWM // fade the LED on to off: for (int brightness = 255; brightness >= 0; brightness--) { analogWrite(ledPin, brightness); delay(2); } // pausa delay(100); } Ejercicio 1 El semáforo ● Crea un semáforo que este en verde,y que cuando pulsen un botón se genere el típico patrón de semáforo( ámbar parpadeando,rojo,y verde de nuevo) ● Modifica el tiempo de espera y la velocidad del parpadeo,utilizando un control analógico (diagrama de bloques,diagrama de flujo y código) ● Modifica el ejercicio como te parezca oportuno