Imágenes
Códigos
Uso de funciones y puerto serie. Control de colores por potenciómetro en un RGB
int enciendeColor(int pinEntrada, int pinSalida){ //Leemos el pin de Entrada int valorLeido=analogRead(pinEntrada); //Realizamos la conversión int valorEscrito=map(valorLeido,0,1023,0,255); //Escribimos el valor en la patilla RGB que se nos pida analogWrite(pinSalida,valorEscrito); //Finalizada la función, devolvemos el valor de salida return valorEscrito; } void setup() { //declaramos los pines de salida pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); //Inicializamos el puerto serie Serial.begin(9600); } void loop() { //Escribimos el color azul y asignamos el valor que devuelve la función a una variable int valAzul=enciendeColor(0,11); //Escribimos el color verde y asignamos el valor que devuelve la función a una variable int valVerde=enciendeColor(1,10); //Escribimos el color rojo y asignamos el valor que devuelve la función a una variable int valRojo=enciendeColor(2,9); //Pasamos los valores por el puerto serie: Serial.print(“Color azul: “); Serial.print(valAzul); //Tabulación Serial.print(“\t"); Serial.print(“Color verde: “); Serial.print(valVerde); //Tabulación Serial.print(“\t“); Serial.print(“Color rojo: “); //Escribimos último valor y hacemos un salto de carro Serial.println(valRojo); //Esta pequeña espera es para dar legibilidad a la pantalla delay(100); }
Experimentando con la naturaleza de las variables char
//Declaramos la variable char char valor; void setup() { //Inicializamos el puerto serie Serial.begin(9600); //Asignamos 'a' a valor mediante comillas simples valor='a'; } void loop() { // Pasamos "valor" por el puerto serie e incrementamos en una unidad Serial.println(valor); valor++; delay(1000); }
Programa básico para aprender a recorrer una matriz
//Declaramos la matriz de valores de tipo float float valores[5][3]; void setup() { //Inicializamos el puerto serie Serial.begin(9600); //Usamos dos bucles anidados para recorrer la matriz y dar un valor for (int i=0;i<5;i++){ for (int x=0;x<3;x++){ valores[i][x]=random(10); } } //Recorremos de nuevo la matriz y pasamos el valor por el puerto serie for (int i=0;i<5;i++){ for (int x=0;x<3;x++){ Serial.print("En la dimensión "); Serial.print(i); Serial.print(", "); Serial.print(x); Serial.print(" se ha guardado el número: "); Serial.println(valores[i][x]); } } } void loop() { //Esta función está vacía esta vez }
Knight Rider (obra de David Cuartielles y Aaron Hallborg)
/* Knight Rider 1 -------------- * Basically an extension of Blink_LED. * * (cleft) 2005 K3, Malmo University @author: David Cuartielles @hardware: David Cuartielles, Aaron Hallborg */ int pin2 = 2; int pin3 = 3; int pin4 = 4; int pin5 = 5; int pin6 = 6; int pin7 = 7; int pin8=8; int pin9=9; int pin10=10; int pin11=11; int pin12=12; int pin13=13; int timer = 100; void setup(){ pinMode(pin2, OUTPUT); pinMode(pin3, OUTPUT); pinMode(pin4, OUTPUT); pinMode(pin5, OUTPUT); pinMode(pin6, OUTPUT); pinMode(pin7, OUTPUT); pinMode(pin8, OUTPUT); pinMode(pin9, OUTPUT); pinMode(pin10, OUTPUT); pinMode(pin11, OUTPUT); pinMode(pin12, OUTPUT); pinMode(pin13, OUTPUT); } void loop() { digitalWrite(pin2, HIGH); delay(timer); digitalWrite(pin2, LOW); delay(timer); digitalWrite(pin3, HIGH); delay(timer); digitalWrite(pin3, LOW); delay(timer); digitalWrite(pin4, HIGH); delay(timer); digitalWrite(pin4, LOW); delay(timer); digitalWrite(pin5, HIGH); delay(timer); digitalWrite(pin5, LOW); delay(timer); digitalWrite(pin6, HIGH); delay(timer); digitalWrite(pin6, LOW); delay(timer); digitalWrite(pin7, HIGH); delay(timer); digitalWrite(pin7, LOW); delay(timer); digitalWrite(pin8, HIGH); delay(timer); digitalWrite(pin8, LOW); delay(timer); digitalWrite(pin9, HIGH); delay(timer); digitalWrite(pin9, LOW); delay(timer); digitalWrite(pin10, HIGH); delay(timer); digitalWrite(pin10, LOW); delay(timer); digitalWrite(pin11, HIGH); delay(timer); digitalWrite(pin11, LOW); delay(timer); digitalWrite(pin12, HIGH); delay(timer); digitalWrite(pin12, LOW); delay(timer); digitalWrite(pin13, HIGH); delay(timer); digitalWrite(pin13, LOW); delay(timer); digitalWrite(pin12, HIGH); delay(timer); digitalWrite(pin12, LOW); delay(timer); digitalWrite(pin11, HIGH); delay(timer); digitalWrite(pin11, LOW); delay(timer); digitalWrite(pin10, HIGH); delay(timer); digitalWrite(pin10, LOW); delay(timer); digitalWrite(pin9, HIGH); delay(timer); digitalWrite(pin9, LOW); delay(timer); digitalWrite(pin8, HIGH); delay(timer); digitalWrite(pin8, LOW); delay(timer); digitalWrite(pin7, HIGH); delay(timer); digitalWrite(pin7, LOW); delay(timer); digitalWrite(pin6, HIGH); delay(timer); digitalWrite(pin6, LOW); delay(timer); digitalWrite(pin5, HIGH); delay(timer); digitalWrite(pin5, LOW); delay(timer); digitalWrite(pin4, HIGH); delay(timer); digitalWrite(pin4, LOW); delay(timer); digitalWrite(pin3, HIGH); delay(timer); digitalWrite(pin3, LOW); delay(timer); }
Knight Rider usando matrices para abreviar (obra de David Cuartielles y Aaron Hallborg)
/*Knight Rider 3 -------------- * This example concentrates on making the visuals fluid. * * (cleft) 2005 K3, Malmo University @author: David Cuartielles @hardware: David Cuartielles, Aaron Hallborg */ int pinArray[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; int count = 0; int timer = 30; void setup(){ for (count=0;count<12;count++) { pinMode(pinArray[count], OUTPUT); } } void loop() { //Bucle creciente (recorremos cada pin y el siguiente) for (count=0;count<11;count++) { digitalWrite(pinArray[count], HIGH); delay(timer); digitalWrite(pinArray[count + 1], HIGH); delay(timer); digitalWrite(pinArray[count], LOW); delay(timer*2); } //Bucle decreciente (recorremos cada pin y el anterior) for (count=11;count>0;count--) { digitalWrite(pinArray[count], HIGH); delay(timer); digitalWrite(pinArray[count - 1], HIGH); delay(timer); digitalWrite(pinArray[count], LOW); delay(timer*2);