Wardialer Rev 1

Here is a PICAXE circuit built around a DTMF encoder. In this case, NTE1690 although there are many different numbers for the same part.

The project builds off of a previous project that simply used the 4094.

In this case, Im generating two 4bit patterns that are three bits on and one off. These are what are use to produce each tone. A tone is generated when one of the rows and one of the columns are grounded.

DTMF keypad frequencies
1209 Hz 1336 Hz 1477 Hz 1633 Hz
697 Hz 1 2 3 A
770 Hz 4 5 6 B
852 Hz 7 8 9 C
941 Hz * 0 # D

In this case, if I wanted to send out a “8″, that would require that row 3 and column 2 be grounded.

These correspond (roughly) to q1-q4 being the rows and q5-q8 being the columns. I say “roughly” because I might not have everything lined up perfectly…and Im not too worried about it yet.

So and 8 would correspond to a pattern of rows = 1101 and Columns= 1011 or totally 11011011.

The code is here.

Its not particularly tight or perfect…but adequate for the circuit as it stands.

wardialer_rev1.v1

There are two controls.

The first is a speed. The speed is also read upon startup as a seed for the RANDOM command.

The random value is then masked for the lower 4 bits and this is used as a index into a lookup table for the possible 8bit patterns that produce a tone.

 readadc INPUT_PIN, w1
main:
      random w1

     rand = b2 AND %00001111
     lookup rand, ($EE,$ED,$EB,$E7,$DE,$DD,$DB,$D7,$BE,$BD,$BB,$B7,$7E,$7D,$7B,$77 ), val

There is an additional switch that allows you to pulse in a series of zeros to add spaces between the digits.

Here is a video

Its pretty random…or at least random enough. One improvement would be to reseed the RANDOM value again from the READADC command every few hundred steps or so.

I suppose I could tweak it a bit…but evolution wise, this is about as complicated as I can get it. The main problem is the limited number of inputs to the PICAXE. One pot and one 1 bit leg.

I would like to be able to specify patterns and be able to LFO the speed. This will be done by not clocking from within…but externally. The freed up Analog pin can then be used to specify patterns. A gating function would be nice too. Look for Wardialer Rev 2.0 coming soon.

Back to PICAXE projects