Mulitple i2c devices and sd_card

I am building an irrigation controller using a UNO, it currently has a RTC , 4 keys managed by PCF8574, 4 relays controlled by the same PCF8574, a sd_card, and a 2x16 LCD and a moisture sensor.

The idea is that when powered on the irrigation schedule is read from a file on the sd_card and then the program is run which will turn on and off the relays.

Individually all the bits work, i can read and write to the sd_card, can see buttons pressed can turn on and off relays, can get the time from the rtc.

BUT, I find that the lcd and/or the RTC interfere with the sd_card. As the sd_card is not an i2c device I am at a loss to understand why,

Is anyone aware of why this would be the case and maybe point me to a discussion on the matter.

See

53  void setup() { 
56     //get_rtc_time();
236   //get_rtc_time();

i2c_play.ino (8.1 KB)

Please post code the way told in this guiding topic: How to get the best out of this forum - Using Arduino / Project Guidance - Arduino Forum

Helpers in general don't like downloads filling up their computers.

You need to reveal what you mean by the 'RTC interfere with the sd_card'.

Perhaps explain what actually happens ?

Posting a schematic as you have wired it would help us. Frizzy pictures do not do much. Also post links to technical information on each of the hardware devices.

Thanks.

Would not like to fill up your pc with a file that you could delete.

And, I had a frizzy pic, but you don't want that, eagle is $500 a year (hmmmm ) bit much for what i am doing.

Will battle on, thanks anyway.

O no :scream: please don't do that.

srnet asked a really important question : what is happening ? interfering can be so many things. Does the I2C bus halt ? Does the RTC not have the time anymore ?

This forum can put a sketch between code text, so we prefer that instead of links or attachments. That's how it is.

For those of us who are used to look at schematics, a Fritzing or Tinkercad picture can be really hard to understand. We have to convert it in our head to a normal schematic. That is not impossible, but we just like to emphasize that we don't like Fritzing picture.
Someone should make a T-shirt for nerds with the text: "Don't show me a Fritzing picture" :rofl:

You can draw a schematic on a piece of paper and make a photo of it.

KiCad is free and it can import Eagle *.sch files.
Some use a online schematic service, but I'm struggling too often with those.

You see, if you know the background, then the others were reasonable and to the point :heart:

Free for non-commercial use and up to 80cmsq double sided boards last time I checked.

KiCad is free although a donation is asked for but not required. It will work on most operating systems. I use Linux and my buddy uses Windows. That should fit your budget. I have been using it for several years and I like it. All of the PCBs I did with it came back correct.

How much memory usage does the compiler show? The SD library will need 512 bytes of ram for a buffer. My guess, without being able to compile the code, is that you are low on ram (dynamic memory).

Your sketch is using RTC_millis, which is a software RTC based off the millis counter, so no wiring problems from that.

Use the F() macro for any printed text literals, that will save some ram.