This design was made big enough to have good labeling for all twelve positions of the rotary device selector switch.
This design is predicated on getting a minjature toggle switch with double-pole momentary-off-momentary action, not a popular option. The device to be controlled is selected by a rotary switch, and the toggle switch initiates transmission of ON or OFF codes for up and down as well as display mode commands.
It is quicker than the pushbutton transmitters since no wait for multiple presses is needed,
It uses an analog approach for determining the rotary switch position which depends on the close matching typical of DIP resistor packs.
This is the inside. The design is not very compact in the top but is just deep enough for the rotary switch. The top is high-quality 1/8" plywood from a craft store and the bottom is wood-grain Formica.The rotary switch pokes through a hole in the circuit board.
This controller is retired.
The 16 resistors on the right encode the switch position to an analog voltage. Two 8-resistor DIP packs are used.
They are closely match by the manufacturing process.
One side of the toggle switch encodes its position, to form 24 codes.
The other turns on the MOSFET which completes the power circuit.
C4 keeps the power on.
When not being programmed, the top two hider pins are shorted with a jumper block.
.The circuit uses a Picaxe 08M2 which has 3 functions:
1. Get switch position.
2. Maintain the power until the message has been transmitted.
3. Construct the message and transmit it,
#rem
12_pos_rotary.bas A flat oak box. The switch is connected to non-sequential taps on a 16-resistor potentiometer.
The voltage is measured and combined with the toggle position to provide an index into a table.
The first 3 physical switch positions control the Message Display, and all have a Key Code of "O".
The table gives the Display Code less 48 to distinguish from the rest, which are Key Codes.
Legend: P=actual switch position. I - Index into the data which defines the code to transmit
John Saunders 2015, anoted 4/24/2022
K = Key Code D = Display Code A = action
Up Down
P Label I D A I D A
1 GARAGE/MAH 3 A Garage 2 B Disp Charging Volts
2 TEMP/HUM 7 C Disp Temp 6 D Disp Humidiry
3 BARO/NIGHT 11 E Baro,solar MA 10 F Night-time Display
P Label I K A I K A
4 HANGING 1 I ON 0 C OFF
5 FLOOR 5 b ON 4 f OFF
6 PINAPPLE 9 K ON 8 8 OFF
7 FLASHING 13 Y ON 12 W OFF
8 SHELF 17 E ON 16 F OFF
9 CIRCLE 21 P ON 20 l OFF
10 BULLSEYE 15 M ON 14 g OFF
11 EGGS 19 d ON 18 9 OFF
12 CEILING 23 R ON 22 G OFF
John Saunders 10/31/2016 added off codes for bullseye and circle
#endrem
#picaxe 08M2
rem Inputs
symbol TX_Data_Port = B.0 'Idle low serial transmission at 2400 baud
symbol SW_Port = C.1
symbol Toggle_Port = PinC.3
rem Outputs
symbol Hold_Port = C.4
rem Constants
symbol TX_Preamble = 20 'A long pulse before the serial transmission to trigger an interrupt
symbol TX_Ser_Setup = 10 'Gives time to execute the serial in command in the interrupt procedure
symbol Start_Count = 40
symbol Step_Count = 16
rem Variables
symbol ADC_Val = b1
symbol Key_Addr = b2
symbol Threshold = b3
symbol Key_Code = b4
symbol Display_Code = b5
rem Key Code list
rem 0 1 2 3 4 5 6 7 8 9
DATA 0, ("C","I", 2, 1 ,"f","b", 4 , 3 ,"8","K")
DATA 10, ( 6 , 5 ,"W","Y","g","M","F","E","9","d")
DATA 20, ("l","P","G","R")
main:
HIGH Hold_Port
setfreq m4
LOW Tx_Data_Port
PAUSE 50
READADC Sw_Port,ADC_Val
IF Toggle_Port = 0 THEN
LET Key_Addr = 0
ELSE
LET Key_Addr = 1
eNDIF
LET Threshold = Start_Count
DO WHILE Threshold < ADC_Val
LET Threshold = Threshold + Step_Count
LET Key_Addr = Key_Addr + 2
LOOP
READ Key_Addr,Key_Code
IF Key_Code < $30 THEN 'This is a Display Code less 64
LET Display_Code = Key_Code + $40
LET Key_Code = "O"
ENDIF
HIGH TX_Data_Port 'This pulse unlocks the receiver
PAUSE TX_Preamble
LOW TX_Data_Port
PAUSE TX_Ser_Setup
IF Key_Code = "O" THEN
SEROUT TX_Data_Port,N2400_4,("14L1776O,",Display_Code)
ELSE
SEROUT TX_Data_Port,N2400_4,("14L1776",Key_Code)
ENDIF
SEROUT TX_Data_Port,N2400_4,(13,10) 'The CR,LF is for recording
PAUSE 50
LOW Hold_Port
END