Arduino based LDR volume and source selection controller

Hi,

Very interesting project !

For an active 3 ways (6 channels input and 6 channels output), is there a solution to work with one display and one remote ?
With "IO 2 in 3 out" board or "IO 3 in 2 out" board will it work ? Do I have to change the program ?

Thanks
 
Confirmed, this is what needs to be done. Not sure why it didn't work for me before, probably messed up something else.

Anyway, I have found some bugs in OLED code, mainly related to text display and fonts. This has now been corrected, and I also added switch for AIO PCBs while I was at it. Same code now runs all PCBs.

#define AIO //** enables AIO PCB, comment out for original PCB

https://drive.google.com/drive/folders/0B74euvw8ey5JOENmRXNYUEtySVE

Updated GIT repository! 🙂 Tnx again!
 
Pcb

My little board ....
 

Attachments

  • IMG_20161208_191414_880.jpg
    IMG_20161208_191414_880.jpg
    822.1 KB · Views: 725
I searched in the program and the documentation and i saw that i can't use IO boards for my use.
Can i use three controller modules in parallel, with a single module connected to the display and the three modules connected to the encoder ? Will it works ?

Thanks
 
I searched in the program and the documentation and i saw that i can't use IO boards for my use.
Can i use three controller modules in parallel, with a single module connected to the display and the three modules connected to the encoder ? Will it works ?

Thanks

You would need one controller board as a master and another 2 as Slaves. But the current design does not support this. You could possibly use the Arduino Nano TX and RX pins to get multiple boards to talk to each other but you would need to modify the code to do so.
 
It's been a while since I've checked the thread as annoyingly my email notifications seem to have stopped being sent. Great to see that improvements are being made still.

I've made a couple of other changes to the code running in my unit:

1. Double-push in quick succession on the encoder button is required in order to enter the setup menu. This is to avoid entering the setup mode accidentally, added because I built a unit for a friend who has children who might inadvertently put the unit into that mode.
2. Added backlight switch off/on to the remote's Menu button, for use in dark rooms when watching films, for example, where the backlit display could be a distraction.

Let me know if you want to see the changes and I'll publish them here.

Chris
 
Yes please Chris! Both changes have appeal to me.

The current firmware for my unit is attached, as well as my previous version without the changes relating to the backlight and double-push implementations.

My code is a fair bit behind the version in Github and I've not had time to merge, so I have attached both versions so that you can do a side-by-side comparison using your favourite diff tool and implement the changes as required.

Note that I had to reduce the value assigned to the switch-debounce variable to get the double-push functionality to work reliably.

Thanks
Chris
 

Attachments

You would need one controller board as a master and another 2 as Slaves. But the current design does not support this. You could possibly use the Arduino Nano TX and RX pins to get multiple boards to talk to each other but you would need to modify the code to do so.
Ok i see to modify the code for one master ans two slaves.
Can i use SDA/SDL for i2c communication ? My slaves will not have the same adresses that IC2 and display.

It will be a great solution !

nounouchet
 
Ok i see to modify the code for one master ans two slaves.
Can i use SDA/SDL for i2c communication ? My slaves will not have the same adresses that IC2 and display.

It will be a great solution !

nounouchet


Hi nounouchet,

I came up with the same idea but gave using i2c for communication between master and slaves due to adress conflicts. The easiest way to solve the problem is to use the serial port for communication. I'm currently running 1 master and two 2 slave boards as a 6 channel attenuator.
After a volume change the master transmits the current volume to the slaves. The slaves are triggered by the received data and ajust their volume settings.

To make this work I had to modify the code for master and slaves. Additionally I had solder two wires for the serial connection between the master and the slave boards.

Bodo
 
Hi nounouchet,

I came up with the same idea but gave using i2c for communication between master and slaves due to adress conflicts. The easiest way to solve the problem is to use the serial port for communication. I'm currently running 1 master and two 2 slave boards as a 6 channel attenuator.
After a volume change the master transmits the current volume to the slaves. The slaves are triggered by the received data and ajust their volume settings.

To make this work I had to modify the code for master and slaves. Additionally I had solder two wires for the serial connection between the master and the slave boards.

Bodo
Bodo,
With I2C you can choose slave adresses. So i don't understand why you have a conflict adress.
At first step, i will do a 2 ways preamp. And in a second time a 6 ways.
So i will looking for your realization !

nounouchet
 
Bodo,
With I2C you can choose slave adresses. So i don't understand why you have a conflict adress.
At first step, i will do a 2 ways preamp. And in a second time a 6 ways.
So i will looking for your realization !

nounouchet

nounouchet,

you will run into trouble using the I2C bus if you don't take care of the MCP23008 on each board. The I2C address of the MCP23008 is hard wired. If you don't make the I2C adress selectable by modifying the circuit layout, all MCP23008 will get the same address. I discovered this problem after finishing 5 boards. So I switched over to serial communication.
I will prepare a small setup guide for my master slave configuration including the arduino code for the boards.

Bodo