another nRF24L01 "user" stuck

So i'm building a "weather" station for mominlaw

the transmitter end is ok and done and i have verified with an arduino uno that i can Receive

but to complete the Receiver end of things i need and display and arduino mega

but as many others i can get data from the radio module on the mega

what i have done is putting the uno to a side as i can use that to verify that the radio is still working

and i have verified with the mega that the display is working

transmitter code: /*************************************************************************** - Pastebin.com
Receiver code: #include <TFT_HX8357.h> // Hardware-specific library#include <Wire.h>#includ - Pastebin.com

are there any obvisous faults at the Receiver end?

i will try and see if i have another uno some where i can upload the code to and check if the problem is purely related to the mega

radio module is the type with external antenna

3.3V is connected to 3.3V on the mega
GND is connected to GND at the big connector at the end
CE is connected to pin 7
CSN is connected to pin 8
MOSI is connected to pin 51
MISO is connected to pin 50
SCK is connected to pin 52

Have a look at this Simple nRF24L01+ Tutorial.

The examples are as simple as I could make them and they have worked for other Forum members. If you get stuck it will be easier to help with code that I am familiar with. Start by getting the first example to work

Be aware that the SPI pins are different on a Mega - see the documentation

...R

i know the pins are different on a mega, that is why i listed what pins i have used

i will flash the code to an uno and see if it works there

did not work so i'm looking at your guide

using the code in post #1 i do get data on the Receiver side

but on the transmit side i get a lot of tx failed

is it normal that there are a lot of failed tx before its successfull?

boelle:
did not work so i'm looking at your guide

using the code in post #1 i do get data on the Receiver side

but on the transmit side i get a lot of tx failed

is it normal that there are a lot of failed tx before its successfull?

Without seeing the actual code that YOU uploaded to your two Arduinos I cannot say.

Have you tried the connection-test program in Reply #29 of the Tutorial?

...R

i used the code in your guide

but now my transmit code is: /*************************************************************************** - Pastebin.com
and Receiver code: //#include <TFT_HX8357.h> // Hardware-specific library#include <Wire.h>#incl - Pastebin.com

it works with the uno

serial output from transmitter

---Start---
Temperature = 25 *C
Pressure = 1007 hPa
Humidity = 59 %

Bucket tipped 0 times

Time: 21:36:58
Date: 14/8/2018

23:36:58 14 Aug 2018
---End---Data Sent   Acknowledge received

serial monitor at the other end:

Package:
25
1007
59
0
23
37
14
8
2018

next stage is to upload the same code to the mega and see if it also works there

same code does not work on the mega

i have tripple checked the connections to the module

output from connection test in #29 on the mega

heckConnection Starting

FIRST WITH THE DEFAULT ADDRESSES after power on
  Note that RF24 does NOT reset when Arduino resets - only when power is removed
  If the numbers are mostly 0x00 or 0xff it means that the Arduino is not
     communicating with the nRF24

STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0xe7e7e7e7e7 0x4141417852
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x00 0x20 0x00 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR = 0x02
RF_CH = 0x4c
RF_SETUP = 0x07
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MAX


AND NOW WITH ADDRESS AAAxR  0x41 41 41 78 52   ON P1
 and 250KBPS data rate

STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0xe7e7e7e7e7 0x4141417852
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x00 0x20 0x00 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR = 0x02
RF_CH = 0x4c
RF_SETUP = 0x27
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 250KBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MAX

boelle:
output from connection test in #29 on the mega

That suggests that the Mega is communicating with its nRF24.

Now what about the other Arduino?

And I am not going to Pastebin for code - please just include your code here.

...R

my transmit code is: /*************************************************************************** - Pastebin.com

/***************************************************************************
  This is a library for the BME280 humidity, temperature & pressure sensor

  Designed specifically to work with the Adafruit BME280 Breakout
  ----> http://www.adafruit.com/products/2650

  These sensors use I2C or SPI to communicate, 2 or 4 pins are required
  to interface. The device's I2C address is either 0x76 or 0x77.

  Adafruit invests time and resources providing this open source code,
  please support Adafruit andopen-source hardware by purchasing products
  from Adafruit!

  Written by Limor Fried & Kevin Townsend for Adafruit Industries.
  BSD license, all text above must be included in any redistribution
 ***************************************************************************/

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Time.h>                  
#include <Timezone.h> 

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 9

Adafruit_BME280 bme(BME_CS); // hardware SPI


#include <nRF24L01.h>
#include <RF24.h>
//#include <RF24_config.h>
#define CE_PIN   8
#define CSN_PIN 10
const byte slaveAddress[5] = {'R','x','A','A','A'};
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
//// Single radio pipe address for the 2 nodes to communicate.
//const uint64_t pipe = 0xE8E8F0F0E1LL;
struct package
{
  int temperature ;
  int pressure;
  int humidity ;
  int tips;
  int rf_hh;
  int rf_mm;
  int rf_dd;
  int rf_mo;
  int rf_yy;
};
typedef struct package Package;
Package data;


unsigned long delayTime;

#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>

SoftwareSerial mySerial(5, 4);

Adafruit_GPS GPS(&mySerial);

#define GPSECHO  false

boolean usingInterrupt = false;
             
TimeChangeRule CEST = {"CEST", Last, Sun, Mar, 2, 120};     // Central European Summer Time
TimeChangeRule CET = {"CET ", Last, Sun, Oct, 3, 60};       // Central European Standard Time
Timezone CE(CEST, CET);

const byte interruptPin = 3;
int buckettips = 0;
long debouncing_time = 500; //Debouncing Time in Milliseconds
volatile unsigned long last_micros;




void setup() {

  Serial.begin(115200);
    Serial.println(F("BME280 test"));

    bool status;
    

    status = bme.begin();  
    if (!status) {
        Serial.println("Could not find a valid BME280 sensor, check wiring!");
        while (1);
    }
    
   Serial.println();
  pinMode(3, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), bucketTipped, FALLING);
  
  GPS.begin(9600);
  
  
  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ);   // 1 Hz update rate
  GPS.sendCommand(PGCMD_ANTENNA);

  useInterrupt(true);

  
  
  mySerial.println(PMTK_Q_RELEASE);


  radio.begin();
  radio.setDataRate( RF24_250KBPS );
  radio.setRetries(3,5); // delay, count
  radio.openWritingPipe(slaveAddress);

  delayTime = 1000;

  delay(1000);
  
  
}

// Interrupt is called once a millisecond, looks for any new GPS data, and stores it
SIGNAL(TIMER0_COMPA_vect) {
  char c = GPS.read();
  // if you want to debug, this is a good time to do it!
#ifdef UDR0
  if (GPSECHO)
    if (c) UDR0 = c;  
    // writing direct to UDR0 is much much faster than Serial.print 
    // but only one character can be written at a time. 
#endif
}

void useInterrupt(boolean v) {
  if (v) {
    // Timer0 is already used for millis() - we'll just interrupt somewhere
    // in the middle and call the "Compare A" function above
    OCR0A = 0xAF;
    TIMSK0 |= _BV(OCIE0A);
    usingInterrupt = true;
  } else {
    // do not call the interrupt function COMPA anymore
    TIMSK0 &= ~_BV(OCIE0A);
    usingInterrupt = false;
  }
}

uint32_t timer = millis();
    



void loop() { 
    printValues();
    bool rslt;
    rslt = radio.write(&data, sizeof(data));
        // Always use sizeof() as it gives the size as the number of bytes.
        // For example if dataToSend was an int sizeof() would correctly return 2

    Serial.print("Data Sent ");
//    Serial.print(&data);
    if (rslt) {
        Serial.println("  Acknowledge received");
        
    }
    else {
        Serial.println("  Tx failed");
    }

    delay(delayTime);
    Serial.write(27);       // ESC command
    Serial.print("[2J");    // clear screen command
    Serial.write(27);
    Serial.print("[H");     // cursor to home command
    
}


void printValues() {
    uint8_t hh, mm, ss, dd, mo, yy;
    Serial.println("---Start---");
    Serial.print("Temperature = ");
    int temp_int = bme.readTemperature();
    Serial.print(temp_int);
    Serial.println(" *C");
    data.temperature = temp_int;
    Serial.print("Pressure = ");
    int pres_int = (bme.readPressure() / 100.0F);
    Serial.print(pres_int);
    Serial.println(" hPa");
    data.pressure = pres_int;
    Serial.print("Humidity = ");
    int hum_int = bme.readHumidity();
    Serial.print(hum_int);
    Serial.println(" %");
    Serial.println();
    data.humidity = hum_int;
    Serial.print("Bucket tipped ");
    Serial.print(buckettips);
    Serial.println(" times");
    data.tips = buckettips;

    

 // in case you are not using the interrupt above, you'll
  // need to 'hand query' the GPS, not suggested :(
  if (! usingInterrupt) {
    // read data from the GPS in the 'main loop'
    char c = GPS.read();
    // if you want to debug, this is a good time to do it!
    if (GPSECHO)
      if (c) Serial.print(c);
  }
  
  // if a sentence is received, we can check the checksum, parse it...
  if (GPS.newNMEAreceived()) {
    // a tricky thing here is if we print the NMEA sentence, or data
    // we end up not listening and catching other sentences! 
    // so be very wary if using OUTPUT_ALLDATA and trytng to print out data
    //Serial.println(GPS.lastNMEA());   // this also sets the newNMEAreceived() flag to false
  
    if (!GPS.parse(GPS.lastNMEA()))   // this also sets the newNMEAreceived() flag to false
      return;  // we can fail to parse a sentence in which case we should just wait for another
  }


    
    Serial.print("\nTime: ");
    hh = GPS.hour;
    Serial.print(hh, DEC); Serial.print(':');
    mm = GPS.minute;
    Serial.print(mm, DEC); Serial.print(':');
    ss = GPS.seconds;
    Serial.println(ss, DEC);
    Serial.print("Date: ");
    dd = GPS.day;
    Serial.print(dd, DEC); Serial.print('/');
    mo = GPS.month;
    Serial.print(mo, DEC); Serial.print("/20");
    data.rf_mo = mo;
    yy = GPS.year;
    Serial.println(yy, DEC);
    Serial.println();

    setTime(hh, mm, ss, dd, mo, yy);
  
    time_t utc = now();
//    local = myTZ.toLocal(utc, &tcr);
    printDateTime(CE, utc);    
    
  }

// given a Timezone object, UTC and a string description, convert and print local time with time zone
void printDateTime(Timezone tz, time_t utc)
{
    uint8_t rf_hh, rf_mm, rf_dd, rf_mo, rf_yy;
    char buf[40];
    char m[4];    // temporary storage for month string (DateStrings.cpp uses shared buffer)
    TimeChangeRule *tcr;        // pointer to the time change rule, use to get the TZ abbrev

    time_t t = tz.toLocal(utc, &tcr);
    strcpy(m, monthShortStr(month(t)));
    sprintf(buf, "%.2d:%.2d:%.2d %.2d %s %d",
        hour(t), minute(t), second(t), day(t), m, year(t));
    Serial.println(buf);
    data.rf_hh = hour(t);
    data.rf_mm = minute(t);
    data.rf_dd = day(t);
    data.rf_yy = year(t);
    Serial.print("---End---");
    //buckettips = 0;
    
}

void bucketTipped() {
  if((long)(micros() - last_micros) >= debouncing_time * 1000) {
  buckettips++;
  last_micros = micros();
 }
 }

i need to remove something from the recv. code as it goes past 9000 characters and i cant post it

will remove the code i have commented out... be right back

//#include <TFT_HX8357.h> // Hardware-specific library
#include <Wire.h>
#include <SPI.h> 
//#include <Adafruit_Sensor.h>
//#include <Adafruit_BME280.h> 
//#define BME_SCK 13
//#define BME_MISO 12
//#define BME_MOSI 11
//#define BME_CS 9

//Adafruit_BME280 bme(BME_CS); // hardware SPI

#include <nRF24L01.h>
#include <RF24.h>
//#include <RF24_config.h>
const byte thisSlaveAddress[5] = {'R','x','A','A','A'};
RF24 radio(7, 8);
//TFT_HX8357 tft = TFT_HX8357();       // Invoke custom library

int Tips = 0;
float Rain = 0;
int Res = 0;

int previousRemoteTemperature = 0;
int previousRemoteHumidity = 0;
int previousRemotePressure = 0;
int previousRemoteTips = 0;
int previousRemoteHours = 0;
int previousRemoteMinutes = 0;
int previousRemoteDay = 0;
int previousRemoteMonth = 0;
int previousRemoteYear = 0;
int previousIndoorTemperature = 0;
int previousIndoorHumidity = 0;
int previousIndoorPressure = 0;

int remoteTemperature = 0;
int remoteHumidity = 0;
int remotePressure = 0;
int remoteTips = 0;
int remoteHours = 0;
int remoteMinutes = 0;
int remoteDay = 0;
int remoteMonth = 0;
int remoteYear = 0;
int indoorTemperature = 0;
int indoorHumidity = 0;
int indoorPressure = 0;

struct package
{
  int temperature;
  int pressure;
  int humidity;
  int tips;
  int rf_hh;
  int rf_mm;
  int rf_dd;
  int rf_mo;
  int rf_yy;
};



typedef struct package Package;
Package data;


void setup()
{
    Serial.begin(115200);
    Serial.println(F("Start"));
//    Serial.println(F("BME280 test"));

//    bool status;
    

//    status = bme.begin();  
//    if (!status) {
//        Serial.println("Could not find a valid BME280 sensor, check wiring!");
//        while (1);
//    }
    
   //Serial.println();

//    tft.init();
//    tft.setRotation(0);
//    tft.fillScreen(TFT_BLACK);
//    tft.setTextFont(1);        // Select font 1 which is the Adafruit GLCD font
//    delay(100);
    
    startWirelessCommunication();

//    printUI();

delay(1000);
}

void loop()
{

  checkForWirelessData();
//  readSensor();
//  printIndoorTemperature();
//  printIndoorPressure();
//  printIndoorHumidity();
//  printRemoteTemperature();
//  printRemotePressure();
//  printRemoteHumidity();
//  printRemoteHours();
//  printRemoteMinutes();
//  printRemoteDay();
//  printRemoteMonth();
//  printRemoteYear();
//  printRemoteTips();
}

void startWirelessCommunication()
{
  Serial.println(F("Start Wireless Comm"));
  radio.begin();
  radio.setDataRate( RF24_250KBPS ) ;
  radio.openReadingPipe(1, thisSlaveAddress);
  radio.startListening();
  delay(100);
}

void checkForWirelessData()
{
  
  if ( radio.available())
  {
    while (radio.available())
    {
      radio.read( &data, sizeof(data) );
      remoteTemperature = data.temperature;
      remotePressure = data.pressure;
      remoteHumidity = data.humidity;
      remoteTips = data.tips;
      remoteHours = data.rf_hh;
      remoteMinutes = data.rf_mm;
      remoteDay = data.rf_dd;
      remoteMonth = data.rf_mo;
      remoteYear = data.rf_yy;
    }
    Serial.print("\nPackage:");
    Serial.print("\n");
    Serial.println(data.temperature);
    Serial.println(data.pressure);
    Serial.println(data.humidity);
    Serial.println(data.tips);
    Serial.println(data.rf_hh);
    Serial.println(data.rf_mm);
    Serial.println(data.rf_dd);
    Serial.println(data.rf_mo);
    Serial.println(data.rf_yy);
  }
}

//void readSensor()
//{
//  previousIndoorTemperature = indoorTemperature;
//  previousIndoorPressure = indoorPressure;
//  previousIndoorHumidity = indoorHumidity;
  
//  indoorTemperature = bme.readTemperature();
//  indoorPressure = (bme.readPressure() / 100.0F);
//  indoorHumidity = bme.readHumidity();
//}

//void printIndoorTemperature()
//{
  
//  if(indoorTemperature != previousIndoorTemperature)
//  {

//    tft.setCursor(155,145);
//    tft.setTextColor(TFT_CYAN);
//    tft.setTextSize(4);
//    tft.print(22);
    //tft.print(indoorTemperature);

//    previousIndoorTemperature = indoorTemperature;

//  }
//}

//void printIndoorPressure()
//{

//  if(indoorPressure != previousIndoorPressure)
//  {
  
//    tft.setCursor(155,235);
//    tft.setTextColor(TFT_CYAN);
//    tft.setTextSize(4);
//    tft.print(50);
//    tft.print(indoorHumidity);

//    previousIndoorPressure = indoorPressure; 

//  }
//}

//void printIndoorHumidity()
//{
//   if(indoorHumidity != previousIndoorHumidity)
//  {
  
//    tft.setCursor(155,190);
//    tft.setTextColor(TFT_CYAN);
//    tft.setTextSize(4);
//    tft.print(90);
//    tft.print(indoorHumidity);

//    previousIndoorHumidity = indoorHumidity; 

//  }
//}

//void printRemoteTemperature()
//{
  
//  if (remoteTemperature != previousRemoteTemperature)
//  {

//    tft.setCursor(150, 344);
//    tft.setTextColor(TFT_GREEN);
//    tft.setTextSize(3);
//    tft.print(50);
//    tft.print(remoteTemperature);

//    Serial.print("Temp: ");
//    Serial.println(remoteTemperature);

//    previousRemoteTemperature = remoteTemperature;

//  }
//}

//void printRemotePressure()
//{
  
//  if (remotePressure != previousRemotePressure)
//  {

//    tft.setCursor(150, 409);
//    tft.setTextColor(TFT_GREEN);
//    tft.setTextSize(3);
//    tft.print(55);
//    tft.print(remotePressure);

//    Serial.print("Pressure: ");
//    Serial.println(remotePressure);

//    previousRemotePressure = remotePressure;

//  }
//}

//void printRemoteHumidity()
//{
  
//  if (remoteHumidity != previousRemoteHumidity)
//  {

//    tft.setCursor(150, 374);
//    tft.setTextColor(TFT_GREEN);
//    tft.setTextSize(3);
//    tft.print(10);
//    tft.print(remoteHumidity);

//    Serial.print("Humidity: ");
//    Serial.println(remoteHumidity);

//    previousRemoteHumidity = remoteHumidity;

//  }
//}

//void printRemoteHours()
//{
  
//  if (remoteHours != previousRemoteHours)
//  {

//    tft.setCursor(224, 25);
//    tft.setTextColor(TFT_WHITE);
//    tft.setTextSize(3);
//    tft.print(14);
//    tft.print(remoteHours);

//    Serial.print("Hours: ");
//    Serial.println(remoteHours);

//    previousRemoteHours = remoteHours;

//  }
//}

//void printRemoteMinutes()
//{
  
//  if (remoteMinutes != previousRemoteMinutes)
//  {

//    tft.setCursor(270, 25);
//    tft.setTextColor(TFT_WHITE);
//    tft.setTextSize(3);
//    tft.print(14);
//    tft.print(remoteMinutes);

//    Serial.print("Minutes: ");
//    Serial.println(remoteMinutes);

//    previousRemoteMinutes = remoteMinutes;

//  }
//}

//void printRemoteDay()
//{
  
//  if (remoteDay != previousRemoteDay)
//  {

//    tft.setCursor(20, 25);
//    tft.setTextColor(TFT_WHITE);
//    tft.setTextSize(3);
//    tft.print(14);
//    tft.print(remoteDay);

//    Serial.print("Day: ");
//    Serial.println(remoteDay);

//    previousRemoteDay = remoteDay;

//  }
//}

//void printRemoteMonth()
//{
  
//  if (remoteMonth != previousRemoteMonth)
//  {

//    tft.setCursor(77, 25);
//    tft.setTextColor(TFT_WHITE);
//    tft.setTextSize(3);
//    tft.print(14);
//    tft.print(remoteMonth);

//    Serial.print("Month: ");
//    Serial.println(remoteMonth);

//    previousRemoteMonth = remoteMonth;

//  }
//}

//void printRemoteYear()
//{
  
//  if (remoteYear != previousRemoteYear)
//  {

//    tft.setCursor(134, 25);
//    tft.setTextColor(TFT_WHITE);
//    tft.setTextSize(3);
//    tft.print(2018);
//    tft.print(remoteYear);

//    Serial.print("Year: ");
//    Serial.println(remoteYear);

//    previousRemoteYear = remoteYear;

//  }
//}

//void printRemoteTips()
//{

  //if (remoteTips == 0)
  //{
  //  Serial.println("No Tips");
  //}
  
//  if (remoteTips != 0)
//  {

//  Tips = Tips + remoteTips;
//  Rain = Tips * 0.33


//    tft.setCursor(150, 439);
//    tft.setTextColor(TFT_GREEN);
//    tft.setTextSize(3);
//    tft.print(22);
//    tft.print(Tips);

//Serial.print("Tips: ");
//Serial.println(Tips);


//if(remoteDay == 1 && remoteHours == 0 && remoteMinutes == 0 && Res == 0)
//{

//Rain = 0;
//Res = 1;

//}

//if(remoteDay == 2)
//{

//Res = 0;

//}


//}

    
//  }
//}

i removed the last section of code that was commented out anyway...

"Now what about the other Arduino?"

both codes works perfectly...... BUT only if they are run on UNO

as soon i put the Receiver code on the Mega it will not Receive data

but as you see the mega can talk to the radio module which makes it a puzzle

the transmitter is an uno, but i have also tried to use a nano as it will likely be what i use in the end

the Receiver also works perfect as long i stick to a uno.... its kind of making me want to pull my hair out (the little i have left)

a pic of how i connected it to the back side of the uno. I need to do so as the display prevents me from connecting from the top side

from top left to right

Thick red is 3.3V
Black with red stribe is GND

purple is SCK
green is MISO
red is MOSI
yellow is CE
black is CSN

there are no shorts even thou it looks like a short with 3.3V power and the pin next to it

2 pics of the radio module connections, and i just double checked everything again


boelle:
its kind of making me want to pull my hair out (the little i have left)

That will continue to be the case until you start to examine the problem systematically. Wireless problems can be very hard to debug.

Instead of trying a myriad of options stick to something simple.

You seem to be saying that you can get communication working between two Unos. If so, try the first example in my Tutorial and get that to work with the two Unos. Don't do anything else until that works properly.

When it is working properly leave the code on the two Unos so you can instantly confirm that things work and load one of the programs onto the Mega - suitably modified for the different I/O pins - and see if that can communicate with the Uno.

If it does not work and if you want more help from me, then post the program YOU have uploaded to the Uno and to the Mega and also post a sample of the output from the two Arduinos when you run the programs.

As a separate issue, photos of the hardware are no substitute for a simple pencil drawing of the wiring connections. Photos of the hardware are too easy to mis-understand.

Have you a 10µF capacitor across Vcc and GND for the nRF24?

Having the wires twisted together may not help.

...R

PS ... it seems madness to make solder connections to the Mega before you are sure that everything works

Robin2:
You seem to be saying that you can get communication working between two Unos.

100% correct

Robin2:
suitably modified for the different I/O pins - and see if that can communicate with the Uno.

that i did

Robin2:
then post the program YOU have uploaded to the Uno and to the Mega and also post a sample of the output from the two Arduinos when you run the programs.

i also posted the code.... one of them is just over the limit of what i can post here so i had to remove the last section that was commented out

boelle:
i also posted the code.... one of them is just over the limit of what i can post here so i had to remove the last section that was commented out

My two programs combined are well within the 9000 character limit.

At the moment I am only interested in seeing the versions of my code that YOU have uploaded to your two Arduinos.

...R