BasicMicroUK - Forums
It is currently Mon Oct 22, 2018 3:08 am

All times are UTC [ DST ]

Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: Night Singer for the Nano Simon Board
PostPosted: Mon Jun 07, 2010 3:58 am 

Joined: Mon Aug 18, 2008 1:26 am
Posts: 799
Location: CA bay Area
This is a small program meant for the Nano Simon Board, but could also be wired up on the Nano Development Board, or a breadboard if the user wants, just observe the P-numbers.
I had seen a program for some small PIC board that sat out of sight. It had a light sensor and a speaker. When the lighting went low enough, siren sounds came out of the speaker until the lighting got bright again.
Imagine some poor unsuspecting parent is going around at the end of the day turning lights off before going to bed. She turns off the family room lights... and All Heck busts loose! She quickly turns the lights back on again to inspect the mayhem.. and things go quiet! Grrr! RazzleBar! JUNIORRRR!!

This program is benign, as it plays "Mary Had a Little Lamb" when things go dark. Have fun with it. Add sirens!
; Night Singer v1.0 - 060610 By Ken Jennejohn
; For the BasicMicro Simon Board
; Using "Mary Had a Little Lamb", written by Dale and Nathan
; Sits quietly while well lit, "sings" in low light

;The below table defines all the notes needed.
;It assigns the numeric value to an easily readable
;constant to make the song easier to create.
AH con 440*2 ;assigns a value for the note and octave
AS con 466*2 ;the note is 466*2 = A sharp second octave
BH con 494*2
CH con 523*2
CS con 554*2
DH con 587*2
DS con 622*2
EH con 659*2
FH con 698*2
FS con 740*2
GH con 784*2
GS con 831*2

PAUSE 500  ; A small pause to allow procesor to initialize internally
SEROUT s_out, i9600, ["Starting...", 7 ,13]  ; Let user know we're at start if terminal connected.

LightVal var word  ; 16-bit variable for light readings
DarkVal var word   ; 16-bit variable to store trigger value for "too dark"
DarkVal = 500      ; change this value if not right for your situation, set to 500 originally

Looper  ; This routine loops back on itself as long as there's light enough
ADIN  P11, LightVal
SEROUT s_out, i9600, [dec LightVal, 13]
IF LightVal > DarkVal then Looper

; When it goes dark enough, the program comes here to play music and startle the unsuspecting!

;The lookup table above is used to load the notes into the sound command.
;With a FOR/NEXT loop to increment through the note table in lookup.
;A slight pause is added to prevent the notes from overlapping. The
;loop will repeat forever.

Position var byte  ; value for FOR-NEXT loop
Note var long  ; value for note frequency

   for Position = 0 to 33
      lookup Position,[CS,BH,AH,BH,CS,0,CS,0,CS,BH,0,BH,0,BH,0,CS,|
                EH, 0, EH,CS,BH,AH,BH,CS,0,CS,0,CS,BH,0,BH,CS,BH,AH],Note
      if Note then
         sound p12,[350\Note]
         pause 10
   ADIN P11, LightVal  ; Take a light reading
   IF LightVal > DarkVal then  ; If the lights come on,
   Position = 34           ; make Position = 34 and break this FOR-NEXT loop
   ENDIF                   ; and return to Looper at top.
   pause 500  ; Small pause between playings.
   goto Looper


 Post subject: Re: Night Singer for the Nano Simon Board
PostPosted: Wed Jan 01, 2014 11:09 am 
New User

Joined: Wed Jan 01, 2014 11:01 am
Posts: 1
Hey Ken

Long time, no hear.

This is Andy Veronis. Send me an email at I may have some work for you.


Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC [ DST ]

Who is online

Users browsing this forum: No registered users and 0 guests

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group