#include "RF24.h" + #include "Ucglib.h" == NO ME FUNCIONA


hola amigos y amigas.

al no esta familiarizado con los protocolos spi y pesar que me puesto más o menos al día con este tipo de comunicacion, tengo un problema que seguro que alguien me puede orientar que me esta pasado.

tengo dos dispositivos con sistema spi, uno es un transceptor nrf2401 y el otro una pantalla oled ( ugclib, ssd1331 ), pues bien, quiero gobernar dichos dispositivos con el mismo arduino mini pro.

en el código que acompaña mi post se aprecia que en la primera parte de loop se puede ver la parte del código en la que leo y envio través de nrf2401 los datos que se pueden apreciar en este, me funciona de maravilla, la cuestion es cuando añado la parte del código para gobernar la pantalla oled es cuando esta no responde.

comentar que si cargo la parte del código de la oled por separado, esta funciona correctamente, asi descarto que tenga problemas de cableado u otros.

lo que hago como podéis apreciar es que habilito al principio del loop con el pin chip select cs del dispositivo nrf240q con un digitalwrite en low, después cuando termino la parte de protocolo del nrf2401, lo inhabilito y vuelvo hacer  lo mismo con la pantalla oled.

pues bien, la parte primera del loop funciona correctamente, es decir el protocolo del nrf2401 sigue funcionando bien habilite o no el pin chip select cs, osea que siguo recibiendo y enviando datos, sin embargo la oled no se inmuta.

ayuda ? gracias.

code: [select]

#include <spi.h>
#include "rf24.h"
#include "ucglib.h"


 

ucglib_ssd1331_18x96x64_univision_swspi ucg(/*sclk=*/ 13, /*data=*/ 11, /*cd=*/ 12 , /*cs=*/ 7, /*reset=*/ 9);

rf24 radio(9,10);
float data[3];
float dataenvio[3];
const uint64_t pipes[2] = { 0xf0f0f0f0e1ll, 0xf0f0f0f0d2ll };
int claxon = 4;
int claxonstate = 0;
int buzzer = 8;

void setup(void)
{   spi.begin();
 
    pinmode(buzzer, output);
    pinmode(claxon, output); 
    pinmode(10, output);
    pinmode(7, output);
digitalwrite(10, high);
digitalwrite(7, high);
   
    serial.begin(115200);
    radio.begin();
   tone(buzzer, 23, 300);
    radio.setretries(15,15);    // maximos reintentos
    //radio.setpayloadsize(8);   // reduce el payload de 32 si tienes problemas
 
    // open pipes other nodes communication
    radio.openwritingpipe(pipes[0]);
    radio.openreadingpipe(1,pipes[1]);




   delay(1000);
  ucg.begin(ucg_font_mode_transparent);
  //ucg.begin(ucg_font_mode_solid);
  ucg.clearscreen();
}

void loop(void)


digitalwrite(10, low); 

 
 radio.stoplistening();    // paramos la escucha para poder hablar
   
         unsigned long time = millis();
         serial.print("emisor-envio  ");
         serial.print(time); serial.print("time  ");
         claxonstate = digitalread(claxon);
         data[0] = analogread(a0);
         data[1] = analogread(a1);
         data[2] = claxonstate;
         bool ok = radio.write( &data, sizeof(data) );
         serial.print(" a0=");     serial.print(  data[0]  );
         serial.print(" a1=");     serial.print(  data[1]);
         serial.print(" claxon="); serial.print(  claxonstate);
         
         if (ok)  serial.print("  ok...");
         else     serial.print("failed");

radio.startlistening();   //volvemos la escucha

         unsigned long started_waiting_at = millis();
         bool timeout = false;
         while ( ! radio.available() && ! timeout )  // esperasmos repsuesta hasta 200ms
         if (millis() - started_waiting_at > 200 )timeout = true;
   
         if ( timeout )  serial.print("failed, response timed out");
         else
         { // leemos el mensaje recibido
         radio.read( &dataenvio, sizeof(dataenvio) );
         serial.print("recibo => ");
         serial.print(dataenvio[0]); serial.print(" *c, ");
         serial.print(dataenvio[1]); serial.print(" % ");
         serial.print(dataenvio[2]); serial.println(" v");
      }
         if ( dataenvio[2] <= 20 ) { tone(buzzer, 2, 300); }
         else { digitalwrite(buzzer, low); }
 digitalwrite(10, high);
 
    delay(300);


digitalwrite(7, low);
 
  ucg.setfont(ucg_font_ncenr12_tr);
  ucg.setcolor(255, 255, 255);
  //ucg.setcolor(0, 255, 0);
  ucg.setcolor(1, 255, 0,0);
  ucg.setprintpos(0,25);
  ucg.print("hello world!");

digitalwrite(7, high);
   
   
}
 

bueno según tus definiciones tienes ucglib con cs = 7 y
nrf24 con cs = 10
a ambos pines debes poner una r pull-up para asegurar que los chips queden deshabilitados cuando no son direccionados.

prueba ver.


Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > #include "RF24.h" + #include "Ucglib.h" == NO ME FUNCIONA


arduino

Comments

Popular posts from this blog

Flip address is out of range arduino uno r3

Arduino DUE ADC to DAC Piezo 30 Khz-100Khz

Indesign and MathType fonts