Random number delay

Hi all
I work with two Heltec esp32 lora boards. First board is sender, second board is receiver. I generate random number on first one. Number is sent to serial port, oled and Lora. Everything works but.
Generated number is correctly sent to serial port and to lora, but oled on the first board shows previous number? Anyone have idea where is problem?
Thanks in advance

void loop() 
{
  randNumber = random(10, 100);  
  Serial.print("Sending packet: ");
  Serial.println(counter);
  Serial.println(randNumber); 
  
  Heltec.display->display();
  Heltec.display->clear();
  Heltec.display->setFont(ArialMT_Plain_16);
  Heltec.display->drawString(0, 0, "Random number :");
  Heltec.display->drawString(0,20, String(randNumber));
  Heltec.display->drawString(0, 30, String(counter)); 

  LoRa.setTxPower(20,RF_PACONFIG_PASELECT_PABOOST);
  LoRa.beginPacket();  
  LoRa.print("Packet  ");
  LoRa.print(counter);
  LoRa.print(randNumber);
  LoRa.endPacket();
  
  counter++;
  digitalWrite(25, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);                    
  digitalWrite(25, LOW);    // turn the LED off by making the voltage LOW
  delay(5000);
}

Quick take here, did you erase the old number before writing the new one?

By only including loop() in your post, you deprived us of the declaration of 'randNumber'. Please post the entire sketch.

Hi aarg

This is all code:

#include "heltec.h"
#define BAND    923E6  

int counter = 0;
long randNumber;

void setup() {

  Heltec.begin(true /*DisplayEnable Enable*/, true /*Heltec.LoRa Disable*/, true /*Serial Enable*/, true /*PABOOST Enable*/, BAND /*long BAND*/);
  
  LoRa.setSpreadingFactor(11);
  LoRa.setSignalBandwidth(125E3);
  LoRa.setCodingRate4(4);
  LoRa.setSyncWord(0x34);   
  LoRa.setPreambleLength(8);
}

void loop() 
{
  randNumber = random(10, 100);

  Serial.print("Packet: ");
  Serial.println(counter);
  Serial.print("randNumber: ");
  
  Heltec.display->display();
  Heltec.display->clear();
  Heltec.display->setFont(ArialMT_Plain_16);
  Heltec.display->drawString(0, 0, "randNumber :");
  Heltec.display->drawString(0,20, String(randNumber));
  
  LoRa.setTxPower(20,RF_PACONFIG_PASELECT_PABOOST);
  LoRa.beginPacket();
  LoRa.print(randNumber);
  LoRa.endPacket();
  
  counter++;
  digitalWrite(25, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(100);                    
  digitalWrite(25, LOW);    // turn the LED off by making the voltage LOW
  delay(5000);
  
}

This doesn't look like the same code as in post #1... :thinking:

Hi
i have just cleared some // garbage and notes, but this code works as explained.

missing line: Serial.println(randNumber); but doesnt change problem

You tell it to display what is in the buffer BEFORE you put the data in the buffer. That is why it is only showing what was in the buffer before you wrote it. Change the code to:

  Heltec.display->clear();
  Heltec.display->setFont(ArialMT_Plain_16);
  Heltec.display->drawString(0, 0, "randNumber :");
  Heltec.display->drawString(0,20, String(randNumber));
  Heltec.display->display();

Ooo, thanks. Now it works as it should. Heltec offer few info about oled commands, or i can not find. Anywat\y, thank you very much.
Rgds

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.