ATtiny13a - Időkapcsoló

2016-01-30

 

Ezzel a kapcsolással kicsit Édesapámra is emlékezem. Valmikor a besötétített konyhában a barátjával bütykölt nagyítóval exponáltuk a fotópapírokat. Csinált hozzá valaki telefon tárcsából egy időzítőt, de amikor már nem működött, akkor simán egy kapcsolót használtunk, és számoltunk közben, meddig kell exponálnunk. Ez a kapcsolás pont erre való. A LED helyére meg képzeljünk/tervezzünk egy nagyobb fényforrást. Nem tudom most miért jutott az eszembe egy stadion, aminek világítását ki-be kapcsolgatjuk :). Ennek a kapcsolásnak az az érdekessége, hogy több nyomógomb kezelését teszi lehetővé egyetlen analóg láb segítségével. Ezért írtam az ADC kezelésnél, hogy jó lesz még az a progi, ha mérni akarunk. Lemértem vele az osztón az egyes feszültségeket, és ezek szerint állítottam be a programot. Látható, hogy szükség esetén több gombot is használatunk, vagy egyszerűbb ellenálláshálózatot, ami nem is lineáris lépcsőket produkál.



/*******************************************************************************
*   Author       -  Kiraly Tibor
*                   http://www.tkiraaly.hu
*   Date         -  2016.01.30.
*   Chip         -  Atmel ATtiny13A
*   Compiler     -  avr-gcc ( WinAVR)
*
*   Idokapcsolo
*
********************************************************************************
*   PonyProg Configuration and Security Bits (bepipalva):
*
*   CKSEL1 -, CKSEL0 P      - Internal Oscillator 9,6 MHz
*   CKDIV8 P                - Divide clock by 8
*   
*******************************************************************************/
#define F_CPU    1,2 MHZ                    // orajel


#include "tkiraaly_attiny13a.h"
#include <util/delay.h>


// mert ertekek 0xFF, 0xCD, 0x9A, 0x66, 0x33, 0x00
//               255,  205,  154,  102,   51,    0


int main( void)
{
   U8 v;
   PB0_OUT;
   PB0_1;
   ADC_8BIT;                           // 8 bit felbonas
   ADC_VREF_AVCC;                      // a tap a referencia feszultseg
   ADC_IN2;                            // 2. bemenet kivalasztasa
   ADC_FREE_RUN;                       // folyamatos meres

   for(;;)
   {
      while( ADCH > 250);              // varakozas gombra
      _delay_ms( 20);                  // beall a bemenet
      v= ADCH;                         // feszultseg stabilizalodott
      PB0_0;
      if( v > 190) _delay_ms( 3000);   // 5 sec
      if( v > 140) _delay_ms( 1000);   // 2 sec
      if( v >  90) _delay_ms(  500);   // 1 sec
      if( v >  40) _delay_ms(  300);   // 0,5 sec
                    _delay_ms( 200);   // 0,2 sec
      PB0_1;
      _delay_ms( 1000);                // 1 sec varakozas
   }
}

Itt a vége, fuss el véle, legytek az én vendégeim, innen letölthetitek a programokat, miegymást összecsomagolva.