Hi, 5 years ago i developed and build a baseball scoreboard which is currently directly connected via USB/Serial to a PC. The data to control the scoreboard are send via a VB application i developed. Now i wanted to upgrade the project and replace the USB/Serial connection with radio transmission. (two Arduinos each with a NRF24L01+ module). I thought that i can "simply" replace the Serial commands with the Radio commands but here i do face an issue with the radio.read function at the Receiver which i am not able to wrap my head around after several days of unsuccessful testing.
To make it easier i am using the following simple sketch on the Transmitter side which emulates just a couple of commands usually the VB application would send.
Transmitter
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00001";
void setup() {
radio.begin();
radio.setChannel(55);
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
void loop() {
const char text[] = "<P005ON>";
radio.write(&text, sizeof(text));
delay(1000);
const char text1[] = "<P005OF>";
radio.write(&text1, sizeof(text1));
delay(1000);
const char text2[] = "<I008>";
radio.write(&text2, sizeof(text2));
delay(1000);
const char text3[] = "<I001>";
radio.write(&text3, sizeof(text3));
delay(1000);
}
For a better overview of the Receiver sketch i left the "old" Serial commands in the code, disabled them and marked them with //old USB Code. The new RF codes i tried to use are marked with //RF Code.
The problem is in line 128 rc = radio.read(). I tried several other variations but none of them would allow me to successfully verify the sketch.
// Associated Visual Basic Project = Pincontrol
// Version 2021 nRF24L01 (Receiver) replaces data transmission via Serial/USB (PC - VB Scoreboard App. - USB Cable - Arduino Mega - Scoreboard)
// with data transmission via Radio (PC - Arduino Uno/NRF24L01+ - Arduino Mega/NRF24L01+ - Scoreboard)
// !Attention new Arduino Mega Pin for Out 2 - 51 > 48!
#include <SPI.h> //RF Code Libraries
#include <nRF24L01.h> //RF Code Libraries
#include <RF24.h> //RF Code Libraries
RF24 radio(7, 8); // CE, CSN //RF Code PINS
const byte address[6] = "00001"; //RF Code Address
boolean debug = true;
// length of command is 20 chrs - if you need longer commands then increase the size of numChars
const byte numChars = 20;
char receivedChars[numChars];
boolean newData = false;
boolean feedback = true;
void setup()
{
pinMode(49, OUTPUT); // Ball 1
pinMode(47, OUTPUT); // Ball 2
pinMode(45, OUTPUT); // Ball 3
pinMode(53, OUTPUT); // Out 1
pinMode(48, OUTPUT); // Out 2 //Attention - now Pin 48 because formely used Pin 51 is needed for NRF24L01
pinMode(43, OUTPUT); // Strike 1
pinMode(41, OUTPUT); // Strike 2
pinMode(25, OUTPUT); // LatchPin ST_CP Home Daisy Chain Shifregister 2x7 Segments
pinMode(27, OUTPUT); // ClockPin SH_CP Home
pinMode(23, OUTPUT); // DataPin DS Home
pinMode(31, OUTPUT); // LatchPin ST_CP Inning Shiftregister 1x8 Segments
pinMode(33, OUTPUT); // ClockPin SH_CP Inning
pinMode(29, OUTPUT); // DataPin DS Inning
pinMode(37, OUTPUT); // LatchPin ST_CP Guest Daisy Chain Shifregister 2x7 Segments
pinMode(39, OUTPUT); // ClockPin SH_CP Guest
pinMode(35, OUTPUT); // DataPin DS Guest
Serial.begin(57600);
radio.begin(); // RF Code
radio.setChannel(55); // RF Cod
radio.openReadingPipe(0, address); // RF Cod
radio.setPALevel(RF24_PA_MIN); // RF Cod
radio.startListening(); // RF Code
// TEST THE DISPLAY AND LIGHT ALL LEDS FOR 5 SECONDS AT EVERY PROGRAM START
// Strikes, Outs and Balls
digitalWrite (43, HIGH);
digitalWrite (41, HIGH);
digitalWrite (53, HIGH);
digitalWrite (48, HIGH);
digitalWrite (49, HIGH);
digitalWrite (47, HIGH);
digitalWrite (45, HIGH);
// INNING DIGIT 1x 8 SEGMENT DISPLAY (A-H)Using H as 10s Digit.
digitalWrite(31, LOW); //Latch Pin
shiftOut(29,33,MSBFIRST,255);
digitalWrite(31, HIGH);
// GUEST DIGITS 2x7 DAISY CHAINED SEGMENT DISPLAYS (A-G)
digitalWrite(37, LOW);
shiftOut(35,39,MSBFIRST,127);
shiftOut(35,39,MSBFIRST,127);
digitalWrite(37, HIGH);
// HOME DIGITS 2x7 DAISY CHAINED SEGMENT DISPLAYS (A-G)
digitalWrite(25, LOW);
shiftOut(23,27,MSBFIRST,127);
shiftOut(23,27,MSBFIRST,127);
digitalWrite(25, HIGH);
delay (5000);
digitalWrite (43, LOW);
digitalWrite (41, LOW);
digitalWrite (53, LOW);
digitalWrite (48, LOW);
digitalWrite (49, LOW);
digitalWrite (47, LOW);
digitalWrite (45, LOW);
// INNING DIGIT
digitalWrite(31, LOW);
shiftOut(29,33,MSBFIRST,6);
digitalWrite(31, HIGH);
// GUEST DIGIT
digitalWrite(37, LOW);
shiftOut(35,39,MSBFIRST,0);
shiftOut(35,39,MSBFIRST,63);
digitalWrite(37, HIGH);
// HOME DIGIT
digitalWrite(25, LOW);
shiftOut(23,27,MSBFIRST,0);
shiftOut(23,27,MSBFIRST,63);
digitalWrite(25, HIGH);
// TEST ENDE
}
void loop()
{
// if (Serial.available() > 0) { recvWithStartEndMarkers(); //old USB Code
if (radio.available() > 0) { recvWithStartEndMarkers(); } //RF Code
if (newData) { parseData(); }
}
/*********************
* Takes serial input and looks for data between a start and end marker.
* Global: Updates receivedChars[] with the received data
* Local:
*/
void recvWithStartEndMarkers()
{
// function recvWithStartEndMarkers
static boolean recvInProgress = false;
static byte ndx = 0;
char startMarker = '<';
char endMarker = '>';
char rc;
// if (Serial.available() > 0) { //old USB Code
// rc = Serial.read(); //old USB Code
if (radio.available() > 0) { //RF Code
rc = radio.read(); //RF Code HERE IS THE PROBLEM: no matching function for call to 'RF24::read()'
if (recvInProgress == true)
{
if (rc != endMarker)
{
receivedChars[ndx] = rc;
ndx++;
if (ndx >= numChars) { ndx = numChars - 1; }
}
else
{
receivedChars[ndx] = '\0'; // terminate the string
recvInProgress = false;
ndx = 0;
newData = true;
}
}
else if (rc == startMarker) { recvInProgress = true; }
}
}
/*********************
* converts 3 ascii characters to a numeric value
* Global: Expects receivedChars[] to contain the ascii characters
* Local: startPos is the position of the first character
*/
int convertToNumber( byte startPos) //Original mit 3 Characters
{
unsigned int tmp = 0;
tmp = (receivedChars[startPos]-48) * 100;
tmp = tmp + (receivedChars[startPos+1]-48) * 10;
tmp = tmp + receivedChars[startPos+2]-48;
return tmp;
}
/*********************
* Checks receivedChars[] for commands
* Global: receivedChars[] and newData;
* Local:
*/
void parseData()
{
newData = false;
if (debug) { Serial.println( receivedChars ); }
// OUTS, STRIKES AND BALLS
// P0xxON - "P" for VB Checkboxes, "0xx" (001 - 010) is the associated checkbox number in Pincontrol, "ON" = on
// P0xxOF - "P" for VB Checkboxes, "0xx" (001 - 010) is the associated checkbox number in Pincontrol, "OF" = off
if (receivedChars[0] == 'P' )
{
int tmp = convertToNumber( 1 ); // (1) defining that the first value after "P" is the starter for the convertToNumber function
if ( receivedChars[4] == 'O' && receivedChars[5] == 'N' ) { digitalWrite(tmp,HIGH); }
if ( receivedChars[4] == 'O' && receivedChars[5] == 'F' ) { digitalWrite(tmp,LOW); }
}
//INNING COUNTER
// I001 - "I" for VB Inning NumericUpDown, "001", "002", ... "019" is the switch case number
if (receivedChars[0] == 'I')
{
int inningDisplay = convertToNumber( 1 ); //uses convertToNumber routine and converts
//out of 001 - 019 the individual switch case number 1-19.
switch (inningDisplay){
case 0:
inningDisplay = 63;
break;
case 1: //1
inningDisplay = 48;
break;
case 2: //2
inningDisplay = 91;
break;
case 3: //3
inningDisplay = 79;
break;
case 4:
inningDisplay = 102;
break;
case 5:
inningDisplay = 109;
break;
case 6:
inningDisplay = 125;
break;
case 7:
inningDisplay = 7;
break;
case 8:
inningDisplay = 127;
break;
case 9:
inningDisplay = 111;
break;
case 10:
inningDisplay = 191;
break;
case 11:
inningDisplay = 134;
break;
case 12:
inningDisplay = 219;
break;
case 13:
inningDisplay = 207;
break;
case 14:
inningDisplay = 230;
break;
case 15:
inningDisplay = 237;
break;
case 16:
inningDisplay = 253;
break;
case 17:
inningDisplay = 135;
break;
case 18:
inningDisplay = 255;
break;
case 19:
inningDisplay = 231;
break;
}
digitalWrite(31, LOW);
shiftOut(29,33,MSBFIRST,inningDisplay); //8 bit Shiftout to Inning Counter 1x8-Segment display
digitalWrite(31, HIGH);
}
//GUEST COUNTER
// G001 - "G" for VB Guest NumericUpDown, "001", "002", ... "099" is the switch case number
if (receivedChars[0] == 'G')
{
int guestDisplay = convertToNumber( 1 ); //uses convertToNumber routine and converts
//out of "001" - "099" the individual switch case number 1-99.
int guestDisplay1;
int guestDisplay10;
switch (guestDisplay){
case 0:
guestDisplay10 = 0;
guestDisplay1 = 63;
break;
case 1:
guestDisplay10 = 0;
guestDisplay1 = 48;
break;
case 2:
guestDisplay1 = 91;
guestDisplay10 = 0;
break;
case 3:
guestDisplay1 = 79;
guestDisplay10 = 0;
break;
case 4:
guestDisplay1 = 102;
guestDisplay10 = 0;
break;
case 5:
guestDisplay1 = 109;
guestDisplay10 = 0;
break;
case 6:
guestDisplay1 = 125;
guestDisplay10 = 0;
break;
case 7:
guestDisplay1 = 7;
guestDisplay10 = 0;
break;
case 8:
guestDisplay1 = 127;
guestDisplay10 = 0;
break;
case 9:
guestDisplay1 = 111;
guestDisplay10 = 0;
break;
case 10:
guestDisplay1 = 63;
guestDisplay10 = 48;
break;
case 11:
guestDisplay1 = 48 ;
guestDisplay10 = 48 ;
break;
case 12:
guestDisplay1 = 91 ;
guestDisplay10 = 48 ;
break;
case 13:
guestDisplay1 = 79 ;
guestDisplay10 = 48 ;
break;
case 14:
guestDisplay1 = 102 ;
guestDisplay10 = 48 ;
break;
case 15:
guestDisplay1 = 109 ;
guestDisplay10 = 48 ;
break;
case 16:
guestDisplay1 = 125 ;
guestDisplay10 = 48 ;
break;
case 17:
guestDisplay1 = 7 ;
guestDisplay10 = 48 ;
break;
case 18:
guestDisplay1 = 127 ;
guestDisplay10 = 48 ;
break;
case 19:
guestDisplay1 = 111 ;
guestDisplay10 = 48 ;
break;
case 20:
guestDisplay1 = 63 ;
guestDisplay10 = 91 ;
break;
case 21:
guestDisplay1 = 6 ;
guestDisplay10 = 91 ;
break;
case 22:
guestDisplay1 = 91 ;
guestDisplay10 = 91 ;
break;
case 23:
guestDisplay1 = 79 ;
guestDisplay10 = 91 ;
break;
case 24:
guestDisplay1 = 102 ;
guestDisplay10 = 91 ;
break;
case 25:
guestDisplay1 = 109 ;
guestDisplay10 = 91 ;
break;
case 26:
guestDisplay1 = 125 ;
guestDisplay10 = 91 ;
break;
case 27:
guestDisplay1 = 7 ;
guestDisplay10 = 91 ;
break;
case 28:
guestDisplay1 = 127 ;
guestDisplay10 = 91 ;
break;
case 29:
guestDisplay1 = 111 ;
guestDisplay10 = 91 ;
break;
case 30:
guestDisplay1 = 63 ;
guestDisplay10 = 79 ;
break;
case 31:
guestDisplay1 = 6 ;
guestDisplay10 = 79 ;
break;
case 32:
guestDisplay1 = 91 ;
guestDisplay10 = 79 ;
break;
case 33:
guestDisplay1 = 79 ;
guestDisplay10 = 79 ;
break;
case 34:
guestDisplay1 = 102 ;
guestDisplay10 = 79 ;
break;
case 35:
guestDisplay1 = 109 ;
guestDisplay10 = 79 ;
break;
case 36:
guestDisplay1 = 125 ;
guestDisplay10 = 79 ;
break;
case 37:
guestDisplay1 = 7 ;
guestDisplay10 = 79 ;
break;
case 38:
guestDisplay1 = 127 ;
guestDisplay10 = 79 ;
break;
case 39:
guestDisplay1 = 111 ;
guestDisplay10 = 79 ;
break;
case 40:
guestDisplay1 = 63 ;
guestDisplay10 = 102 ;
break;
case 41:
guestDisplay1 = 6 ;
guestDisplay10 = 102 ;
break;
case 42:
guestDisplay1 = 91 ;
guestDisplay10 = 102 ;
break;
case 43:
guestDisplay1 = 79 ;
guestDisplay10 = 102 ;
break;
case 44:
guestDisplay1 = 102 ;
guestDisplay10 = 102 ;
break;
case 45:
guestDisplay1 = 109 ;
guestDisplay10 = 102 ;
break;
case 46:
guestDisplay1 = 125 ;
guestDisplay10 = 102 ;
break;
case 47:
guestDisplay1 = 7 ;
guestDisplay10 = 102 ;
break;
case 48:
guestDisplay1 = 127 ;
guestDisplay10 = 102 ;
break;
case 49:
guestDisplay1 = 111 ;
guestDisplay10 = 102 ;
break;
case 50:
guestDisplay1 = 63 ;
guestDisplay10 = 109 ;
break;
case 51:
guestDisplay1 = 6 ;
guestDisplay10 = 109 ;
break;
case 52:
guestDisplay1 = 91 ;
guestDisplay10 = 109 ;
break;
case 53:
guestDisplay1 = 79 ;
guestDisplay10 = 109 ;
break;
case 54:
guestDisplay1 = 102 ;
guestDisplay10 = 109 ;
break;
case 55:
guestDisplay1 = 109 ;
guestDisplay10 = 109 ;
break;
case 56:
guestDisplay1 = 125 ;
guestDisplay10 = 109 ;
break;
case 57:
guestDisplay1 = 7 ;
guestDisplay10 = 109 ;
break;
case 58:
guestDisplay1 = 127 ;
guestDisplay10 = 109 ;
break;
case 59:
guestDisplay1 = 111 ;
guestDisplay10 = 109 ;
break;
case 60:
guestDisplay1 = 63 ;
guestDisplay10 = 125 ;
break;
case 61:
guestDisplay1 = 6 ;
guestDisplay10 = 125 ;
break;
case 62:
guestDisplay1 = 91 ;
guestDisplay10 = 125 ;
break;
case 63:
guestDisplay1 = 79 ;
guestDisplay10 = 125 ;
break;
case 64:
guestDisplay1 = 102 ;
guestDisplay10 = 125 ;
break;
case 65:
guestDisplay1 = 109 ;
guestDisplay10 = 125 ;
break;
case 66:
guestDisplay1 = 125 ;
guestDisplay10 = 125 ;
break;
case 67:
guestDisplay1 = 7 ;
guestDisplay10 = 125 ;
break;
case 68:
guestDisplay1 = 127 ;
guestDisplay10 = 125 ;
break;
case 69:
guestDisplay1 = 111 ;
guestDisplay10 = 125 ;
break;
case 70:
guestDisplay1 = 63 ;
guestDisplay10 = 7 ;
break;
case 71:
guestDisplay1 = 6 ;
guestDisplay10 = 7 ;
break;
case 72:
guestDisplay1 = 91 ;
guestDisplay10 = 7 ;
break;
case 73:
guestDisplay1 = 79 ;
guestDisplay10 = 7 ;
break;
case 74:
guestDisplay1 = 102 ;
guestDisplay10 = 7 ;
break;
case 75:
guestDisplay1 = 109 ;
guestDisplay10 = 7 ;
break;
case 76:
guestDisplay1 = 125 ;
guestDisplay10 = 7 ;
break;
case 77:
guestDisplay1 = 7 ;
guestDisplay10 = 7 ;
break;
case 78:
guestDisplay1 = 127 ;
guestDisplay10 = 7 ;
break;
case 79:
guestDisplay1 = 111 ;
guestDisplay10 = 7 ;
break;
case 80:
guestDisplay1 = 63 ;
guestDisplay10 = 127 ;
break;
case 81:
guestDisplay1 = 6 ;
guestDisplay10 = 127 ;
break;
case 82:
guestDisplay1 = 91 ;
guestDisplay10 = 127 ;
break;
case 83:
guestDisplay1 = 79 ;
guestDisplay10 = 127 ;
break;
case 84:
guestDisplay1 = 102 ;
guestDisplay10 = 127 ;
break;
case 85:
guestDisplay1 = 109 ;
guestDisplay10 = 127 ;
break;
case 86:
guestDisplay1 = 125 ;
guestDisplay10 = 127 ;
break;
case 87:
guestDisplay1 = 7 ;
guestDisplay10 = 127 ;
break;
case 88:
guestDisplay1 = 127 ;
guestDisplay10 = 127 ;
break;
case 89:
guestDisplay1 = 111 ;
guestDisplay10 = 127 ;
break;
case 90:
guestDisplay1 = 63 ;
guestDisplay10 = 111 ;
break;
case 91:
guestDisplay1 = 6 ;
guestDisplay10 = 111 ;
break;
case 92:
guestDisplay1 = 91 ;
guestDisplay10 = 111 ;
break;
case 93:
guestDisplay1 = 79 ;
guestDisplay10 = 111 ;
break;
case 94:
guestDisplay1 = 102 ;
guestDisplay10 = 111 ;
break;
case 95:
guestDisplay1 = 109 ;
guestDisplay10 = 111 ;
break;
case 96:
guestDisplay1 = 125 ;
guestDisplay10 = 111 ;
break;
case 97:
guestDisplay1 = 7 ;
guestDisplay10 = 111 ;
break;
case 98:
guestDisplay1 = 127 ;
guestDisplay10 = 111 ;
break;
case 99:
guestDisplay1 = 111 ;
guestDisplay10 = 111 ;
break;
}
digitalWrite(37, LOW);
shiftOut(35,39,MSBFIRST,guestDisplay10); //SHIFTOUT 16 bits to 2x7 Segment Digits
shiftOut(35,39,MSBFIRST,guestDisplay1); //SHIFTOUT 16 bits to 2x7 Segment Digits
digitalWrite(37, HIGH);
}
//HOME COUNTER
// H001 - "H" for VB Home NumericUpDown, "001", "002", ... "099" is the switch case number
if (receivedChars[0] == 'H')
{
int homeDisplay = convertToNumber( 1 ); //uses convertToNumber routine and converts
//out of "001" - "099" the individual switch case number 1-99.
int homeDisplay1;
int homeDisplay10;
switch (homeDisplay){
case 0:
homeDisplay1 = 63;
homeDisplay10 = 0;
break;
case 1:
homeDisplay1 = 48;
homeDisplay10 = 0;
break;
case 2:
homeDisplay1 = 91;
homeDisplay10 = 0;
break;
case 3:
homeDisplay1 = 79;
homeDisplay10 = 0;
break;
case 4:
homeDisplay1 = 102;
homeDisplay10 = 0;
break;
case 5:
homeDisplay1 = 109;
homeDisplay10 = 0;
break;
case 6:
homeDisplay1 = 125;
homeDisplay10 = 0;
break;
case 7:
homeDisplay1 = 7;
homeDisplay10 = 0;
break;
case 8:
homeDisplay1 = 127;
homeDisplay10 = 0;
break;
case 9:
homeDisplay1 = 111;
homeDisplay10 = 0;
break;
case 10:
homeDisplay1 = 63;
homeDisplay10 = 48;
break;
case 11:
homeDisplay1 = 48 ;
homeDisplay10 = 48 ;
break;
case 12:
homeDisplay1 = 91 ;
homeDisplay10 = 48 ;
break;
case 13:
homeDisplay1 = 79 ;
homeDisplay10 = 48 ;
break;
case 14:
homeDisplay1 = 102 ;
homeDisplay10 = 48 ;
break;
case 15:
homeDisplay1 = 109 ;
homeDisplay10 = 48 ;
break;
case 16:
homeDisplay1 = 125 ;
homeDisplay10 = 48 ;
break;
case 17:
homeDisplay1 = 7 ;
homeDisplay10 = 48 ;
break;
case 18:
homeDisplay1 = 127 ;
homeDisplay10 = 48 ;
break;
case 19:
homeDisplay1 = 111 ;
homeDisplay10 = 48 ;
break;
case 20:
homeDisplay1 = 63 ;
homeDisplay10 = 91 ;
break;
case 21:
homeDisplay1 = 6 ;
homeDisplay10 = 91 ;
break;
case 22:
homeDisplay1 = 91 ;
homeDisplay10 = 91 ;
break;
case 23:
homeDisplay1 = 79 ;
homeDisplay10 = 91 ;
break;
case 24:
homeDisplay1 = 102 ;
homeDisplay10 = 91 ;
break;
case 25:
homeDisplay1 = 109 ;
homeDisplay10 = 91 ;
break;
case 26:
homeDisplay1 = 125 ;
homeDisplay10 = 91 ;
break;
case 27:
homeDisplay1 = 7 ;
homeDisplay10 = 91 ;
break;
case 28:
homeDisplay1 = 127 ;
homeDisplay10 = 91 ;
break;
case 29:
homeDisplay1 = 111 ;
homeDisplay10 = 91 ;
break;
case 30:
homeDisplay1 = 63 ;
homeDisplay10 = 79 ;
break;
case 31:
homeDisplay1 = 6 ;
homeDisplay10 = 79 ;
break;
case 32:
homeDisplay1 = 91 ;
homeDisplay10 = 79 ;
break;
case 33:
homeDisplay1 = 79 ;
homeDisplay10 = 79 ;
break;
case 34:
homeDisplay1 = 102 ;
homeDisplay10 = 79 ;
break;
case 35:
homeDisplay1 = 109 ;
homeDisplay10 = 79 ;
break;
case 36:
homeDisplay1 = 125 ;
homeDisplay10 = 79 ;
break;
case 37:
homeDisplay1 = 7 ;
homeDisplay10 = 79 ;
break;
case 38:
homeDisplay1 = 127 ;
homeDisplay10 = 79 ;
break;
case 39:
homeDisplay1 = 111 ;
homeDisplay10 = 79 ;
break;
case 40:
homeDisplay1 = 63 ;
homeDisplay10 = 102 ;
break;
case 41:
homeDisplay1 = 6 ;
homeDisplay10 = 102 ;
break;
case 42:
homeDisplay1 = 91 ;
homeDisplay10 = 102 ;
break;
case 43:
homeDisplay1 = 79 ;
homeDisplay10 = 102 ;
break;
case 44:
homeDisplay1 = 102 ;
homeDisplay10 = 102 ;
break;
case 45:
homeDisplay1 = 109 ;
homeDisplay10 = 102 ;
break;
case 46:
homeDisplay1 = 125 ;
homeDisplay10 = 102 ;
break;
case 47:
homeDisplay1 = 7 ;
homeDisplay10 = 102 ;
break;
case 48:
homeDisplay1 = 127 ;
homeDisplay10 = 102 ;
break;
case 49:
homeDisplay1 = 111 ;
homeDisplay10 = 102 ;
break;
case 50:
homeDisplay1 = 63 ;
homeDisplay10 = 109 ;
break;
case 51:
homeDisplay1 = 6 ;
homeDisplay10 = 109 ;
break;
case 52:
homeDisplay1 = 91 ;
homeDisplay10 = 109 ;
break;
case 53:
homeDisplay1 = 79 ;
homeDisplay10 = 109 ;
break;
case 54:
homeDisplay1 = 102 ;
homeDisplay10 = 109 ;
break;
case 55:
homeDisplay1 = 109 ;
homeDisplay10 = 109 ;
break;
case 56:
homeDisplay1 = 125 ;
homeDisplay10 = 109 ;
break;
case 57:
homeDisplay1 = 7 ;
homeDisplay10 = 109 ;
break;
case 58:
homeDisplay1 = 127 ;
homeDisplay10 = 109 ;
break;
case 59:
homeDisplay1 = 111 ;
homeDisplay10 = 109 ;
break;
case 60:
homeDisplay1 = 63 ;
homeDisplay10 = 125 ;
break;
case 61:
homeDisplay1 = 6 ;
homeDisplay10 = 125 ;
break;
case 62:
homeDisplay1 = 91 ;
homeDisplay10 = 125 ;
break;
case 63:
homeDisplay1 = 79 ;
homeDisplay10 = 125 ;
break;
case 64:
homeDisplay1 = 102 ;
homeDisplay10 = 125 ;
break;
case 65:
homeDisplay1 = 109 ;
homeDisplay10 = 125 ;
break;
case 66:
homeDisplay1 = 125 ;
homeDisplay10 = 125 ;
break;
case 67:
homeDisplay1 = 7 ;
homeDisplay10 = 125 ;
break;
case 68:
homeDisplay1 = 127 ;
homeDisplay10 = 125 ;
break;
case 69:
homeDisplay1 = 111 ;
homeDisplay10 = 125 ;
break;
case 70:
homeDisplay1 = 63 ;
homeDisplay10 = 7 ;
break;
case 71:
homeDisplay1 = 6 ;
homeDisplay10 = 7 ;
break;
case 72:
homeDisplay1 = 91 ;
homeDisplay10 = 7 ;
break;
case 73:
homeDisplay1 = 79 ;
homeDisplay10 = 7 ;
break;
case 74:
homeDisplay1 = 102 ;
homeDisplay10 = 7 ;
break;
case 75:
homeDisplay1 = 109 ;
homeDisplay10 = 7 ;
break;
case 76:
homeDisplay1 = 125 ;
homeDisplay10 = 7 ;
break;
case 77:
homeDisplay1 = 7 ;
homeDisplay10 = 7 ;
break;
case 78:
homeDisplay1 = 127 ;
homeDisplay10 = 7 ;
break;
case 79:
homeDisplay1 = 111 ;
homeDisplay10 = 7 ;
break;
case 80:
homeDisplay1 = 63 ;
homeDisplay10 = 127 ;
break;
case 81:
homeDisplay1 = 6 ;
homeDisplay10 = 127 ;
break;
case 82:
homeDisplay1 = 91 ;
homeDisplay10 = 127 ;
break;
case 83:
homeDisplay1 = 79 ;
homeDisplay10 = 127 ;
break;
case 84:
homeDisplay1 = 102 ;
homeDisplay10 = 127 ;
break;
case 85:
homeDisplay1 = 109 ;
homeDisplay10 = 127 ;
break;
case 86:
homeDisplay1 = 125 ;
homeDisplay10 = 127 ;
break;
case 87:
homeDisplay1 = 7 ;
homeDisplay10 = 127 ;
break;
case 88:
homeDisplay1 = 127 ;
homeDisplay10 = 127 ;
break;
case 89:
homeDisplay1 = 111 ;
homeDisplay10 = 127 ;
break;
case 90:
homeDisplay1 = 63 ;
homeDisplay10 = 111 ;
break;
case 91:
homeDisplay1 = 6 ;
homeDisplay10 = 111 ;
break;
case 92:
homeDisplay1 = 91 ;
homeDisplay10 = 111 ;
break;
case 93:
homeDisplay1 = 79 ;
homeDisplay10 = 111 ;
break;
case 94:
homeDisplay1 = 102 ;
homeDisplay10 = 111 ;
break;
case 95:
homeDisplay1 = 109 ;
homeDisplay10 = 111 ;
break;
case 96:
homeDisplay1 = 125 ;
homeDisplay10 = 111 ;
break;
case 97:
homeDisplay1 = 7 ;
homeDisplay10 = 111 ;
break;
case 98:
homeDisplay1 = 127 ;
homeDisplay10 = 111 ;
break;
case 99:
homeDisplay1 = 111 ;
homeDisplay10 = 111 ;
break;
}
digitalWrite(25, LOW);
shiftOut(23,27,MSBFIRST,homeDisplay10); //SHIFTOUT 16 bits to 2x7 Segment Digits
shiftOut(23,27,MSBFIRST,homeDisplay1); //SHIFTOUT 16 bits to 2x7 Segment Digits
digitalWrite(25, HIGH);
}
}
Many thanks in advance for your suggestions.