ATMega + panel dotykowy + PWM


Witam Wszystkich.

Myślę o zbudowaniu włącznika wraz z ściemniaczem na uP i panelu dotykowym.
uP rozważam ATM8-16pu lub ATM32 panel mam z starej nawigacji lark 35.
Czy jest możliwość zrobienia całęgo projektu z wykorzystaniem tylko jednego uP?
Jak wygląda obsługa takich paneli na avr?




Portret użytkownika gosc

Kolego jeśli chcesz bawić się

Kolego jeśli chcesz bawić się panelem dotykowym to musisz wiedzieć czy to panel oporowy czy pojemnościowy

Ja używałem oporowego bo większość dostępnych do wyświetlaczy graficznych 240x128 jest właśnie oporowych korzystałem z takiego kodu. Ogólnie chodzi o to że musisz mierzyć rezystancję między okładkami panela a do tego celu wykorzystasz przetwornik ADC

$regfile = "m16def.dat"
$crystal = 16000000
 
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
Dim X As Word
 Dim Y As Word
Do
Config Pina.2 = Output                                      ' Makes port F.0 output
Config Pina.4 = Output                                      ' Makes port F.0 output
Set Porta.2                                                 ' Sets port F.0 High
Reset Porta.4                                               ' Sets port F.2 Low
Ddra.3 = 0                                                  ' Sets port F.1 as input
Ddra.5 = 0                                                  ' Sets port F.1 as input because we need it now as ad input
Waitms 20                                                   ' Wait until the port is stable
Y = Getadc(5)                                               ' Read the ad value for the y
Y = 1024 - Y
Y = Y / 1                                                   ' Invert the reading                                                ' Invert the reading
 'Print "VALUE Y : " ; Y ' for debugging
Config Pina.3 = Output                                      ' Makes port F.1 output
Config Pina.5 = Output                                      ' Makes port F.3 output
Reset Porta.3                                               ' Sets port F.1 Low
Set Porta.3                                                 ' Sets port F.3 High
Ddra.2 = 0                                                  ' Sets port F.0 as input
Ddra.4 = 0                                                  ' Sets port F.2 as input because we need it now as ad input
Waitms 20                                                   ' Wait until the port is stable
X = Getadc(4)                                               ' Read the ad value for the x
X = 1024 - X
X = X / 1                                                   ' Invert the reading                                              ' Invert the reading
  'Print "VALUE X : " ; X
  Waitms 500
  Cls
  Locate 1 , 1
  Lcd "odczyt y" ; Y
  Locate 2 , 1
  Lcd "odczyt x" ; X
  Loop
  End