В общем, сделал я пищалку на арду. Текст программы на баскоме.
$regfile = "m328pdef.dat"
$crystal = 16000000
Dim Invalue As Byte , Oldvalue As Byte
Dim Tune As Word
Ddrb = 2
Didr0 = 1
Admux = &B00100000
Adcsra = &B11100111
Ocr1ah = 2
Ocr1al = 0
Tccr1a = &B01000000
Tccr1b = &B00001011
Invalue = 0
Oldvalue = 0
Do
Invalue = Adch And &B11111000
If Invalue <> Oldvalue Then
Tune = Invalue
Tune = Tune + 100
Ocr1ah = High(tune)
Ocr1al = Low(tune)
Oldvalue = Invalue
End If
Loop
По программе арду начинает считывать аналоговый вход с выхода порта C нулевого разряда, и преобразовав данные записывает как предел счёта для таймера 1, частота которого подаётся на выход порта B первого разряда, к линии которого через сопротивление подключен пьезодинамик. На аналоговый вход включил переменный резистор, регулируя который, могу менять высоту звукового тона на пьезодинамике.
Маска по and нужна для ступенчатости изменения тона, при такой маске как в программе будет 256/8=32 ступени тона.
Что меня смутило - бинарник 344 байта. Мне кажется это много для такой простой программы. Хотелось бы узнать, если программу переписать на си, то сколько будет занимать бинарный файл?




Ответить с цитированием