CLIL - Praktická cvičení: Porovnání verzí
Skočit na navigaci
Skočit na vyhledávání
Bez shrnutí editace |
Bez shrnutí editace |
||
Řádek 1: | Řádek 1: | ||
== exercise with MCU == | |||
[[Soubor:Newbiehack.jpg]] | |||
== Microcontroller - A Beginners Guide == | |||
<gallery> | |||
Soubor:AVR-PRG-01.jpg|[[Vývojová deska ATMEL včetně AVR ATmega16 v2|VYV50 Vývojová deska ATMEL (ATmega16) v2]] | |||
soubor:logo_winavrR.png|[[Soubor:Icon-pdf.gif]] [http://winide51.wz.cz/downloads/avr/manual.pdf WinAVR] | |||
soubor:logo_AVR.png|[[AVR Studio]] | |||
soubor:logo_CVAVR.jpg|[[CodeVisionAVR]] | |||
</gallery> | |||
====Understanding Button Debouncing ==== | |||
[http://newbiehack.com/UnderstandingButtonDebouncing.aspx original link] | |||
{{#widget:YouTube|height=180|width=240|id=Iby888ZXpZ8}} | |||
<source lang"C"> | |||
#include <avr/io.h> | |||
int main(void) | |||
{ | |||
DDRB |= 1 << PINB0; //Set Direction for output on PINB0 | |||
PORTB ^= 1 << PINB0; //Toggling only Pin 0 on port b | |||
DDRB |= 1 << PINB2; //Set Direction for Output on PINB2 | |||
DDRB &= ~(1 << PINB1); //Data Direction Register input PINB1 | |||
PORTB |= 1 << PINB1; //Set PINB1 to a high reading | |||
int Pressed = 0; //Initialize/Declare the Pressed variable | |||
while (1) | |||
{ | |||
if (bit_is_clear(PINB, 1)) //Check is the button is pressed | |||
{ | |||
//Make sure that the button was released first | |||
if (Pressed == 0) | |||
{ | |||
PORTB ^= 1 << PINB0; //Toggle LED in pin 0 | |||
PORTB ^= 1 << PINB2; //Toggle LED on pin 2 | |||
Pressed = 1; | |||
} | |||
} | |||
else | |||
{ | |||
//This code executes when the button is not pressed. | |||
Pressed = 0; | |||
} | |||
} | |||
} | |||
</source> | |||
== exercise with NXT == | == exercise with NXT == |
Verze z 26. 1. 2013, 10:58
exercise with MCU
Microcontroller - A Beginners Guide
Understanding Button Debouncing
#include <avr/io.h>
int main(void)
{
DDRB |= 1 << PINB0; //Set Direction for output on PINB0
PORTB ^= 1 << PINB0; //Toggling only Pin 0 on port b
DDRB |= 1 << PINB2; //Set Direction for Output on PINB2
DDRB &= ~(1 << PINB1); //Data Direction Register input PINB1
PORTB |= 1 << PINB1; //Set PINB1 to a high reading
int Pressed = 0; //Initialize/Declare the Pressed variable
while (1)
{
if (bit_is_clear(PINB, 1)) //Check is the button is pressed
{
//Make sure that the button was released first
if (Pressed == 0)
{
PORTB ^= 1 << PINB0; //Toggle LED in pin 0
PORTB ^= 1 << PINB2; //Toggle LED on pin 2
Pressed = 1;
}
}
else
{
//This code executes when the button is not pressed.
Pressed = 0;
}
}
}
exercise with NXT
maybe: