Un código para gobernarlos TODOS! Boceto Arduino haciendo dos cosas Deja un comentario

VISIÓN DE CONJUNTO

Si miraste nuestro último tutorial, viste que estábamos usando dos códigos / bocetos diferentes …

Uno para el transmisor y otro diferente para el receptor.

Aunque no hay problema para hacerlo de esa manera, en algún momento podría mezclarse y cargar el incorrecto en el tablero equivocado.

En este tutorial veremos una manera fácil de usar un boceto que combine ambos y lo cargue en ambos tableros, y deje que el código detecte en qué placa se está ejecutando y realice diferentes acciones basadas en esa detección.

CONEXIONES DEL TRANSMISOR

El transmisor que utiliza un NANO está utilizando las mismas conexiones utilizadas en el tutorial anterior:

Aquí están las conexiones:

El interruptor está conectado a GND y el pin 8 en el NANO

Los pines NRF24L01:

MISO se conecta al pin 12 del NANO

MOSI se conecta al pin 11 del NANO

SCK se conecta al pin 13 del NANO

CE se conecta al pin 9 del NANO

CSN se conecta al pin 10 del NANO

GND y VCC del NRF24L01 están conectados a GND y 3.3V del NANO

El NRF24L01 utiliza el protocolo de comunicación SPI, por lo que debe asegurarse de estar utilizando los pines SPI de la versión de la placa Arduino que desee utilizar.

Los tableros NANO y UNO tienen los mismos:

  • Pin 11 = MOSI (Master Out Slave In)
  • Pin 12 = MISO ( Master In Slave Out )
  • Pin 13 = SCK ( Reloj serial )

Pero si planea usar, digamos un MEGA 2560, esos pines serán diferentes.

  • Pin 51 = MOSI (Master Out Slave In)
  • Pin 50 = MISO ( Master In Slave Out )
  • Pin 52 = SCK ( Reloj serial )
CONEXIONES DEL RECEPTOR

El esquema del receptor es el mismo excepto que añadimos un puente del pin A0 a GND.

El boceto lo usará para detectar si se está ejecutando en el Receptor o el Transmisor.

Aquí están las conexiones:

El pin WS2812 RGB Stick DI (entrada digital) está conectado al pin 8 en el UNO

GND y VCC están conectados a GND y 5V de UNO

El pin A0 de UNO está conectado a GND

Los pines NRF24L01:

MISO se conecta al pin 12 de la UNO

MOSI se conecta al pin 11 de la UNO

SCK se conecta al pin 13 de UNO

CE se conecta al pin 9 de la UNO

CSN se conecta al pin 10 de la UNO

GND y VCC del NRF24L01 están conectados a GND y 3.3V de UNO

EL CÓDIGO “UNO”

En este tutorial utilizaremos solo una pieza de código (boceto) que se cargará tanto en el transmisor (NANO) como en el receptor (UNO).

El código leerá el estado del pin A0 y detectará si es ALTO o BAJO.

Establecemos el pin A0 en ALTO al inicio, ya que no hay nada conectado al pin A0 del NANO, se mantendrá ALTO.

Pero como hemos conectado el pin A0 de UNO a GND, entonces será BAJO incluso si lo configuramos en ALTO al inicio.

Si es ALTO, entonces significa que se está ejecutando en el NANO (Transmisor) y si está BAJO, entonces es el UNO (Receptor).

Después de eso, solo se trata de hacer acciones en el código basado en el estado A0 pin.

Como siempre, no olvides mirar nuestro video Tutorial para más información.



/ * Inicio del código * / 

/ * Código Arduino One / Bosquejo para Dos funciones

 Creado por Yvan / https: // Inteligente - Bits . com
 Este código es  en el dominio público ... Puede: copiarlo, usarlo, modificarlo, compartirlo o simplemente ignóralo ! Gracias ! 

* / 

// Incluir bibliotecas necesarias al principio #include "nRF24L01.h" // Biblioteca NRF24L01 creada por TMRh20 https://github.com/TMRh20/RF24 
#include "RF24.h" 
#include "SPI.h" 
#include "FastLED.h" // Biblioteca FastLED para WS2812 RGB Stick http://fastled.io/ 

// Definir los pines utilizados #define NUM_LEDS 8 // Número de leds en stick para Receptor 
#define LED_PIN 8 // Entrada digital (DI) del RGB Stick conectado al pin 8 del UNO (Receptor) 
#define SwitchPin 8 // El conmutador Arcade está conectado al Pin 8 en NANO (Transmisor) 
#define board_select A0 // Pin utilizado para detectar el estribo 

// Variables utilizadas En t Mensaje enviado[ 1 ] = { 000 }; // Se usa para almacenar el valor antes de ser enviado a través del NRF24L01 (Transmisor) En t ReceivedMessage [ 1 ] = { 000 }; // Se usa para almacenar el valor recibido por el NRF24L01 (Receptor) En t Tabla de correr; // Se usa para almacenar la identidad del estribo
 const uint64_t pipe =  0xE6E6E6E6E6E6 ; // Necesita ser el mismo para comunicando entre 2 NRF24L01 // Componentes Init
 Radio RF24 ( 9 , 10 ); // NRF24L01 usa pines SPI + Alfiler 9  y  10 en UNO y NANO
 LED CRGB [NUM_LEDS]; // FastLED Library Init (Receptor)


 Configuración de vacío ()
 { // Make board_select Pin HIGH al inicio
 pinMode (board_select, INPUT);
 digitalWrite (board_select, HIGH);
 retrasar( 100 ); // Poco retraso para asegurarse de que es estable a ALTO // Compruebe para ver qué tabla es corriendo Si (digitalRead (board_select)) { // Si es ALTO entonces es el NANO (transmisor) Tabla de correr =  0 ;

 pinMode (SwitchPin, INPUT_PULLUP); // Haz el pin del interruptor entrada  con resistor pullup
 digitalWrite (SwitchPin, ALTO); // Hacer el pin de interruptor ALTO al inicio
 } más { // Luego, el pin se detectó BAJO, lo que significa es el UNO (Receptor) Tabla de correr =  1 ;

 pinMode (LED_PIN, SALIDA); // Coloque el pin RGB Stick UNO (receptor) en una SALIDA

 FastLED . addLeds NEOPIXEL, LED_PIN > (leds, NUM_LEDS); // Configurar la biblioteca FastLED
 FastLED . claro(); // Borrar los LED RGB Stick para ( En t X =  0 ;  X ! = NUM_LEDS;  X ++ ) { // Ilumina LED Stick todas Rojo al inicio
 leds [x] = CRGB :: Rojo;
 }

 FastLED . setBrightness ( 50 );
 FastLED . espectáculo();
 }

 radio . empezar(); // Comience RF24L01 en ambos tableros Si ( Tabla de correr ==  0 ) //  0  = Nano (transmisor)
 {
 radio . openWritingPipe (pipe); // Tubería de escritura abierta para transmitir
 } más  //  Si  no  =  0 Entonces eso es el UNO (Receptor) {
 radio . openReadingPipe ( 1 ,tubo); // Abra la pipa de lectura para recibir
 radio . empieza a escuchar();
 }

 }

 void loop () { Si ( Tabla de correr ==  0 ) { // Entonces eso es el transmisor 

Si (digitalRead (SwitchPin) == BAJO){ // Si el interruptor es Activado
 Mensaje enviado[ 0 ] =  111 ;
 radio . escribir (SentMessage, 1 ); // Enviar valor a través de NRF24L01
 } más {
 Mensaje enviado[ 0 ] =  000 ;
 radio . escribir (SentMessage, 1 );
 }
 } Si ( Tabla de correr ==  1 ) // Entonces eso es el Receptor { mientras (radio . disponible())
 {
 radio . leer (ReceivedMessage, 1 ); // Leer información de  el  NRF24L01 

Si (ReceivedMessage [ 0 ] ==  111 ) // Indica cambio es presionado
 { para ( En t X =  0 ;  X ! = NUM_LEDS;  X ++ )
 {
 leds [x] = CRGB :: Verde;
 FastLED . espectáculo();
 }
 } más { para ( En t X =  0 ;  X ! = NUM_LEDS;  X ++ )
 {
 leds [x] = CRGB :: Rojo;
 FastLED . espectáculo();
 }
 }
 retrasar( 10 );
 }
 }
 } / * Fin del código * / 


VIDEO TUTORIAL

DESCARGAR

Copie el código de Sketch anterior en su software Arduino IDE para programar su Arduino.

Bibliotecas usadas:

Descargue la biblioteca NRF24L01 creada por TMRh20 aquí: https://github.com/TMRh20/RF24

Descargue la biblioteca FastLED creada por focalintent aquí: https://github.com/FastLED/FastLED/releases

Una vez descargado, simplemente extrae el contenido de los archivos zip dentro de tu ” arduino / carpeta “libraries”.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Enviar Whatsapp
Hola 👋
¿En qué podemos ayudarte?