Para el siguiente experimento, enviaremos un dato que varía entre 0 a 100 que corresponde de 0 a 100%, que es análogo de los 0 a 255 bits que maneja la salida PWM a través de la función "AnalogWrite()", dirigida a dos leds.
El dato de entrada se toma como un dato tipo String que se lee hasta encontrar el line feed (fin de linea) , luego lee el dato desde la posición inicial hasta encontrar el caracter correspondiente a la coma "," y lo asigna al "PWM 1" que corresponde al led del pin 11, para luego enviar el segundo dato correspondiente al "PWM 2" tomando el dato desde la posición correspondiente a la ",".
El dato de entrada se toma como un dato tipo String que se lee hasta encontrar el line feed (fin de linea) , luego lee el dato desde la posición inicial hasta encontrar el caracter correspondiente a la coma "," y lo asigna al "PWM 1" que corresponde al led del pin 11, para luego enviar el segundo dato correspondiente al "PWM 2" tomando el dato desde la posición correspondiente a la ",".
Los únicos pines que pueden usar la función de salida PWM en el caso del Arduino UNO de manera nativa son:
# 11
# 10
# 9
# 6
# 5
# 3
La conexión es la siguiente:
# PIN D11 : Arduino UNO => Resistencia => LED 1 : Ánodo
# PIN D10 : Arduino UNO => Resistencia => LED 2 : Ánodo
# PIN D10 : Arduino UNO => Resistencia => LED 2 : Ánodo
# GND : Arduino UNO => LED 1 y 2: Cátodo
El programa usado para el Arduino es el que se muestra:
/* PROGRAMA DE PRUEBA DE COMUNICACION SERIAL CONEXION: Arduino (D11) : Catodo del led 1 Arduino (D10) : Catodo del led 2 Arduino (GND): Anodo del led 1, 2 El siguiente programa nos ayuda a enviar una trama ingresada por puerto serial para ser leida por el Arduino y ser convertida en el valor del PWM de 0 a 100% (0 - 255 bits) Formato del dato: porcentaje_1,porcentaje_2 como XXX,YYY NOTA: Los pienes que poseen salida PWM son 3, 5, 6, 9, 10 y 11 Autor: Renato Hurtado http://beetlecraft.blogspot.pe/ El siguiente programa es de uso publico, cualquier modificacion o mal uso del mismo que pudiera ocasionar el mal funcionamiento de la plataforma de uso de la misma no es responsabilidad del autor */ const int led_1 = 11, led_2 = 10; // Variable asignada al pin led 1 y 2 String data; // Variable asignada al dato obtenido void setup() { pinMode(led_1, OUTPUT); // Configuracion del pin led 1 como salida pinMode(led_2, OUTPUT); // Configuracion del pin led 2 como salida Serial.begin(9600); // Comunicacion serial a 9600 bps // Mensaje inicial Serial.println("Ingresar el dato como: porcentaje_1,porcentaje_2"); Serial.println("Formato: XXX,YYY"); Serial.println("Ejemplo: 10,100 (10% y 100%)"); } void loop() { if(Serial.available() > 0){ // Lectura del puerto mientras sigue abierto data = Serial.readStringUntil('\n'); // Lectura del dato hasta el line feed Serial.print("Dato original: "); Serial.println(data); // Muestra del dato original int n, pwm_1, pwm_2; // Variables de almacenamiento de pwm y para algoritmo de lectura for (int i = 0; i <= data.length(); i++){ // Lectura total del tamano del dato if (data.substring(i, i+1) == ","){ // Lectura del dato hasta encontrar el caracter "," pwm_1 = data.substring(0, i).toInt(); // Conversion del dato obtenido del porcentaje del pwm 1 n = i + 1; // Posicion de la letra final leida + 1 } } // Lectura total del tamano del dato desde el ultimo punto for (int i = n; i <= data.length(); i++){ pwm_2 = data.substring(n, i).toInt(); } // Muestra del dato del porcentaje de PWM 1 y 2 Serial.print("Procentaje 1: "); Serial.print(pwm_1); Serial.println(" %"); Serial.print("Procentaje 2: "); Serial.print(pwm_2); Serial.println(" %"); pwm_1 = map(pwm_1, 0, 100, 0, 255); // Cambio de formato del dato de 0 - 100%, a 0 - 255 pwm_2 = map(pwm_2, 0, 100, 0, 255); // Cambio de formato del dato de 0 - 100%, a 0 - 255 // Muestra del dato en pantalla Serial.print("PWM 1: "); Serial.println(pwm_1); Serial.print("PWM 2: "); Serial.println(pwm_2); analogWrite(led_1, pwm_1); // Salida PWM en el led de 0 a 255 analogWrite(led_2, pwm_2); // Salida PWM en el led de 0 a 255 } }El resultado es el siguiente:
Autor:
No hay comentarios:
Publicar un comentario