Advertisement
AntonioVillanueva

Arduino RX 433Mhz + Oled

Sep 8th, 2021 (edited)
620
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.09 KB | None | 0 0
  1. //Include para 433Mhz
  2. //data NANO D11
  3. #include <RH_ASK.h>
  4. #include <SPI.h> // Not actualy used but needed to compile
  5.  
  6. //Includes para Oled
  7. #include <Wire.h>
  8. #include <Adafruit_GFX.h>//oled
  9. #include <Adafruit_SSD1306.h>//oled
  10. //Resolucion OLED
  11. #define SCREEN_WIDTH 128 // OLED x
  12. #define SCREEN_HEIGHT 32 // OLED Y
  13. //--------------------------------------------------------------------------------------
  14. //Instancias OLED y 433Mhz
  15. Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);//Instancia del OLED
  16.  
  17. RH_ASK driver;//Crea el driver 433Mhz en RX...Instancia el receptor 433 MHZ
  18. //--------------------------------------------------------------------------------------
  19. //Configura Oled a valores de tamano y posicion x e y por defecto
  20. void OledConfig(uint16_t tam=2,uint16_t x=0,uint16_t y=15){
  21.   // inicializo oled en la direccion i2x 0x3C placa 0x78
  22.   if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
  23.     Debug("Problema Oled !!!");
  24.     while (true);
  25.   }else {Debug("Oled OK");
  26.   }
  27.  
  28.   oled.clearDisplay(); // Clear
  29.   oled.setTextSize(tam);          // tamano texto
  30.   oled.setTextColor(WHITE);     // color texto
  31.   oled.setCursor(x, y);        // Posicion texto
  32. }
  33. //--------------------------------------------------------------------------------------
  34. //Imprime texto en la pantalla OLED
  35. void OledPrint(String texto,uint16_t tam=2,uint16_t x=0,uint16_t y=15){
  36.   oled.clearDisplay(); // Clear
  37.   oled.setTextSize(tam);          // tamano texto
  38.   oled.setTextColor(WHITE);     // color texto
  39.   oled.setCursor(x, y);        // Posicion texto  
  40.   oled.println(texto); //  texto  
  41.   oled.display();               // Muestra en Oled  
  42. }
  43. //--------------------------------------------------------------------------------------
  44. //Inicializa driver Tx Rx 433 Mhz
  45.  
  46. void TxRxInit(){
  47.     if (!driver.init()){
  48.          //Serial.println("Falla inicializacion 433Mhz");
  49.          Debug("Falla inicializacion 433Mhz");
  50.            while (true);//Fallo inicializacion 433Mhz
  51.     }else { Debug ("RX 433 Mhz inicializado ");
  52.     }  
  53. }
  54.  
  55. void Debug(char*  txt){
  56.   if (Serial){
  57.      Serial.println (txt);
  58.   }
  59. }
  60. //--------------------------------------------------------------------------------------
  61. //--------------------------------------------------------------------------------------
  62. void setup()
  63. {
  64.     if (Serial)  
  65.         {Serial.begin(9600);}  // Debug RS232
  66.       else {while (true){};}
  67.     //Inicializa OLED
  68.     delay(2000);
  69.     OledConfig();//Inicializa OLED
  70.     OledPrint("Waiting TX");//Envia mensaje al Oled
  71.    
  72.     delay (2000);
  73.    
  74.     TxRxInit();//Inicializa 433Mhz RxTx
  75. }
  76. //--------------------------------------------------------------------------------------
  77. void loop()
  78. {
  79.     uint8_t buf[12];//Texto
  80.     uint8_t buflen = sizeof(buf);//Tamano Buffer
  81.  
  82.     //Debug ("Waiting TX...");  
  83.     if (driver.recv(buf, &buflen)) // No bloquea
  84.     {
  85.       int i;
  86.       // Mensaje con checksum correcto.Se muetra
  87.       //Serial.print("Mensaje : ");
  88.       //Serial.println((char*)buf);  
  89.       Debug ("Mensaje :");
  90.       Debug (buf);
  91.       OledPrint((char*)buf);
  92.     }
  93.    
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement