I received few X9C103 digital potentiometer modules with 10kΩ and I need to prepare it for tests:
I used this schematic:
where in A0 is voltage fron wiper of potentiometer (as a resistive divider for 5V power supply) and also I read 5V voltage in A0 (to check if is 1023).
In the previous tests with a remote contributor X9C103 potentiometer not store value in NVM, so I used an oscilloscope to saw the signals... the signals are ok, but chip not store the value in NVM (non-volatile memory):
so I used EEPROM memory from Arduino Nano board (ATmega328P chip).
Last sketch is pot_X9C103_1_1.ino. and in this sketch it used LapX9C10X library (also X9C103 chip "not want" to store the value using writeNVM() command from this library).
so, LED3 is off (brightness = 0), than after 200ms (variable time_to_stop) brightness increased at 1 (variable fadeAmount), than after 2 ms (variable fade_delay) brightness is 2, after more 2ms brightness is 4, etc, until brightness is 255 (maximum = 100%) .. is a pause (time_to_stop = 200ms) and after that brightness decrease with 1 at every 2ms until 0...
Leds for blink effect (LED1 and LED2) are same period as fadding leds (LED3and LED4):
so, I used for as Command Station: Arduino Mega development board, a Motor shield, ESP8266-01 with logical level adapter, i2c LCD1602 (and than OLED) display + 4 servos connected at an expander board on i2c with 16 outputs using PCA9685 chip, using info from
Easiest mode is to use web throttle (serial control)
So, for first servo (turnout), command is <T 200 SERVO 100 410 205 3>, where 200 is choose ID for turnout, 100 is VPIN (virtual pin for first servo connected at PCA9685), 410 is PWM number for throw (open) for SG90, 205 is PWM number for close position and 3 is slowest movement (0 is fastest movement).
For second servo (turnout), command is <T 201 SERVO 101 410 205 3>, where 201 is choose ID for turnout, 101 is VPIN (virtual pin for second servo connected at PCA9685), 410 is PWM number for throw (open) for SG90, 205 is PWM number for close position and 3 is slowest movement..
So, for third servo (turnout), command is <T 202 SERVO 102 410 205 3>, where 202 is choose ID for turnout, 102 is VPIN (virtual pin for third servo connected at PCA9685), 410 is PWM number for throw (open) for SG90, 205 is PWM number for close position and 3 is slowest movement .
So, for first servo (turnout), command is <T 203 SERVO 103 410 205 2>, where 200 is choose ID for turnout, 100 is VPIN (virtual pin for first servo connected at PCA9685), 410 is PWM number for throw (open) for SG90, 205 is PWM number for close position and 2 is medium movement.
Next step (mandatory) is to store this turnouts in EEPROM memory using <E> command
I can check the defined turnouts using <T> command
Base commands are:
- to throw (open) thefirst turnout
- to close the first turnout
When open Android "Engine Driver" I saw the turnouts defined