|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

NodeMCU en español
NodeMCU - Juan Antonio Villalpando

-- Tutorial de NodeMCU en español --

Volver al índice del tutorial NodeMCU

____________________________

83.- Dos botones en el móvil, al pulsarlos se incrementará/decrementará iluminación en un LED del NodeMCU. Bluetooth. LCD.

- En el móvil tenemos dos Botones "Incrementa" y "Decrementa". Al pulsar sobre ellos enviaremos por Bluetooth la palabra "suma" o "resta", según el Botón pulsado.

- El NodeMCU recibirá esa palabra. Si es suma incrementará en 20 la variable pwm, si es resta decrementará 20.

- La variable pwm establecerá una cierta anchura de pulso PWM en el LED que encenderá más o menos según esa anchura de pulso.

- Consulta:
78.- PWM y LED. Dos pulsadores para incrementar/decrementar la iluminación de un LED. Pantalla LCD.

___________________________________________________
1.- Conexiones.

- Los terminales D1 y D2 los necesita la pantalla LCD para funcionar con el bus I2C.

- El LED está conectado al terminal D3 del NodeMCU, que corresponde al GPIO0.

- En la pantalla LCD saldrá el número correspondiente a PWM. (La palabra "enciende" no sale en este ejemplo)

___________________________________________________
5
.- Código para enviar la palabra "suma" o "resta" desde el móvil al NodeMCU por Bluetooth y que éste ilumine más o menos un LED por PWM. LCD.

Código
Nodemcu_ilumina_LED_BT_LCD.ino
// Juan Antonio Villalpando
// KIO4.COM
// Incrementa/Decrementa LED desde el móvil. PWM.

#include <Wire.h>
#include <LiquidCrystal_I2C.h> 
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int LED0 = 0; // Es el terminal D3 de NodeMCU
int pwm = 500;

void setup() {
  lcd.begin(16,2); // Columnas y filas de LCD
  Serial.begin(9600);
  pinMode(LED0, OUTPUT);
}

void loop(){
byte guardados[10];
int caracteres;
String palabra;

while(1){
if ((caracteres=(Serial.available()))>0){
lcd.clear(); // Borra pantalla
// Esto por si vinieran varios caracteres.
for (int i=0; i<caracteres; i++){
guardados[i]=char(Serial.read()); 
}
} 
guardados[caracteres]=0; // Fin de caracteres.
palabra = (char*)guardados;
  delay(300); 
    if (palabra == "suma"){
     pwm = pwm + 20;
    }
    if (palabra == "resta"){
     pwm = pwm - 20;
    }
    analogWrite(LED0, pwm);
    lcd.setCursor(0,0); // Inicio del cursor
    lcd.print(pwm);  
}
}

___________________________________________________

- App Inventor.
___________________________________________________________
9J.-
Código para enviar la palabra "suma" o "resta" desde el móvil al NodeMCU por Bluetooth y que éste ilumine más o menos un LED por PWM. LCD.

p9J2_ilumina_LED_Nodemcu.aia

- Escribimos una palabra o frase (menor de 16 caracteres) en el CampoDeTexto y la enviamos por Bluetooth al NomeMCU.

- Si escribimos la palabra enciende o apaga, se encenderá o apagará el LED.

_________________
- Diseño.

_________________
- Bloques.

_________________
-
Comentarios.

- Es importante el delay en el código para dar tiempo a escribir en la LCD.

- Esta aplicación se podría haber realizado de otra manera: poner una variable pwm en el código de App Inventor, según pulsemos un botón u otro se incremente o decremente esa varible y se envíe ese valor por Bluetooth al NodeMCU para crear el ancho PWM en el LED.

______________________________________________________________

10.- Otro código más sencillo.

- En vez del código anterior del NodeMcu, podemos poner este otro.

Código
Nodemcu_ilumina_LED_BT_LCD.ino

// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com

#include <Wire.h>
#include <LiquidCrystal_I2C.h>    
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int LED0 = 0; // Es el terminal D3 de NodeMCU
int pwm = 125;

char caracter;
String palabra;

void setup()
{
  lcd.begin(16,2);// Columnas y filas de LCD
  Serial.begin(9600);
  pinMode(LED0, OUTPUT);
}

void loop() {

  if(Serial.available())
  {
    caracter = Serial.read();  
    palabra = palabra + caracter; 

if (caracter == '*') {
      
    Serial.println(palabra);
    palabra = palabra.substring(0, palabra.length() - 1); // Quita último caracter *      
    
    delay(400);
    // LED0
     if (palabra == "suma"){ pwm = pwm + 20; }
     if (palabra == "resta"){ pwm = pwm - 20; }
     analogWrite(LED0, pwm);
     lcd.clear();
     lcd.setCursor(0,0); // Inicio del cursor
     lcd.print(pwm);  
     palabra = "";
  }
      }
}

- Este código irá recibiendo caracteres hasta que llegue el asterisco, este indica fin del mensaje.

- Cuando termine el mensaje se muestra en la LCD y se actúa sobre el LED0.

- Para ello debemos hacer una pequeña modificación en el código de App Inventor:

- En la aplicación p9J2_ilumina_LED_Nodemcu.aia

- cambiar esto, es decir que la palabra enviada siempre termine en asterisco *

______________________________________________________

________________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información