Operácie

Vstupy a výstupy AVR: Rozdiel medzi revíziami

Z SensorWiki

Riadok 3: Riadok 3:
  
 
Tu si trocha zablikáme LEDkou aby sme sa naučili používať _delay_ms()
 
Tu si trocha zablikáme LEDkou aby sme sa naučili používať _delay_ms()
 +
 +
<tabs>
 +
<tab  name="AVR C"><source lang="cpp">
 +
#define F_CPU 16000000UL  // toto je lepsie vlozit do parametrov pre kompilator
 +
 +
#include <avr/io.h>
 +
#include <util/delay.h>
 +
 +
#define set_bit(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
 +
#define clear_bit(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
 +
 +
#define LED1  PB5          // zabudovana dioda
 +
 +
void delay(int delay)      // vlastna funkcia pre dlhsie casy
 +
{
 +
  for (int i=1; i<=delay; i++)
 +
  _delay_ms(1);
 +
}
 +
 +
int main(void)
 +
{
 +
  set_bit(DDRB,LED1);      // set pin LED1 as output
 +
 
 +
  while(1)
 +
  {
 +
delay(250);            // 250 ms delay
 +
    set_bit(PORTB,LED1);    // LED1 = log.1
 +
    delay(250);            // 250 ms delay
 +
    clear_bit(PORTB,LED1);  // LED1 = log.0
 +
  }
 +
 +
  return(0);                // sem nikdy neprideme
 +
}
 +
</source></tab>
 +
<tab name="Arduino">
 +
<source lang="arduino">
 +
void setup()
 +
{
 +
  pinMode(LED_BUILTIN, OUTPUT);      // initialize digital pin LED_BUILTIN as an output.
 +
}
 +
 +
void loop()
 +
{
 +
  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
 +
  delay(1000);                      // wait for a second
 +
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
 +
  delay(1000);                      // wait for a second
 +
}
 +
</source></tab>
 +
</tabs>
 +
 +
  
 
== Digitálne vstupy (Tlačidlá) ==
 
== Digitálne vstupy (Tlačidlá) ==

Verzia zo dňa a času 22:49, 7. február 2021

Digitálne výstupy (LED)

Tu si trocha zablikáme LEDkou aby sme sa naučili používať _delay_ms()

#define F_CPU 16000000UL  // toto je lepsie vlozit do parametrov pre kompilator

#include <avr/io.h>
#include <util/delay.h>

#define set_bit(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
#define clear_bit(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))

#define LED1  PB5          // zabudovana dioda 

void delay(int delay)      // vlastna funkcia pre dlhsie casy 
{
  for (int i=1; i<=delay; i++)
  _delay_ms(1);
}	

int main(void)
{
   set_bit(DDRB,LED1);       // set pin LED1 as output
   
   while(1)
   {
	 delay(250);             // 250 ms delay
     set_bit(PORTB,LED1);    // LED1 = log.1
     delay(250);             // 250 ms delay
     clear_bit(PORTB,LED1);  // LED1 = log.0
   }
	
   return(0);                // sem nikdy neprideme
}
void setup() 
{
  pinMode(LED_BUILTIN, OUTPUT);       // initialize digital pin LED_BUILTIN as an output.
}

void loop() 
{
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}


Digitálne vstupy (Tlačidlá)

A potom to využijeme tu

Ošetrenie zákmitov (debouncing)

a) Hardvérové

b) Softvérové


Literatúra:

  • Jack G. Ganssle: A Guide to Debouncing. The Ganssle Group, Rev 2: April, 2007.
  • Elliot Williams: Embed With Elliot:Debounce Your Noisy Buttons, Part I. Hackaday, 2015.
  • Elliot Williams: Embed With Elliot:Debounce Your Noisy Buttons, Part II. Hackaday, 2015.