Elektronická škrtiaca klapka: Rozdiel medzi revíziami
Zo stránky SensorWiki
Riadok 37: | Riadok 37: | ||
<tab name="AVR C-code"><source lang="c++" style="background: LightYellow;"> | <tab name="AVR C-code"><source lang="c++" style="background: LightYellow;"> | ||
#include <avr/io.h> | #include <avr/io.h> | ||
#include "uart.h" | |||
#define F_CPU 16000000UL | |||
#define BAUDRATE 9600 | |||
#include <stdio.h> | |||
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE); | |||
int main(void) | int main(void) | ||
{ | { | ||
adc_init(); | |||
hw_init(); | |||
uart_init(); | |||
stdout = &mystdout; // printf() works from now | |||
unsigned int measuredValue; | unsigned int measuredValue; | ||
while (1) | DDRD|=(1<<PD6); // Init PD5 and PD6 pins as output | ||
//Initialize Timer0 | |||
TCNT0=0; // Set Initial Timer value | |||
OCR0A=0; // Set Initial Pulse width | |||
//Set fast PWM mode + clear OC0A and set OC0B on compare match | |||
TCCR0A|=(1<<COM0A1)|(1<<COM0B1)|(1<<WGM01)|(1<<WGM00); | |||
TCCR0B|=(1<<CS02)|(1<<CS00); // Set prescaller 1024 and start timer | |||
while(1) | |||
{ | { | ||
measuredValue = adc_read(4); | |||
printf("hodnota: %04d \r",measuredValue); | |||
OCR0A=measuredValue/4; | |||
} | } | ||
return(0); | return(0); | ||
} | } | ||
</source></tab> | </source></tab> | ||
Riadok 63: | Riadok 92: | ||
Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]] | Zdrojový kód: [[Médiá:projektMenoPriezvisko.zip|zdrojaky.zip]] | ||
=== Overenie === | === Overenie === |
Verzia z 12:56, 15. máj 2024
Záverečný projekt predmetu MIPS / LS2024 - Meno Priezvisko
Zadanie
Zostrojte a naprogramujte ovladanie škrtiacej klapky pomocou plynového pedálu.
Literatúra:
Analýza a opis riešenia
Opíšte sem čo a ako ste spravili, ak treba, doplňte obrázkami...
Nezabudnite doplniť schému zapojenia!
Algoritmus a program
Algoritmus programu je....
#include <avr/io.h>
#include "uart.h"
#define F_CPU 16000000UL
#define BAUDRATE 9600
#include <stdio.h>
FILE mystdout = FDEV_SETUP_STREAM(uart_putc, NULL, _FDEV_SETUP_WRITE);
int main(void)
{
adc_init();
hw_init();
uart_init();
stdout = &mystdout; // printf() works from now
unsigned int measuredValue;
DDRD|=(1<<PD6); // Init PD5 and PD6 pins as output
//Initialize Timer0
TCNT0=0; // Set Initial Timer value
OCR0A=0; // Set Initial Pulse width
//Set fast PWM mode + clear OC0A and set OC0B on compare match
TCCR0A|=(1<<COM0A1)|(1<<COM0B1)|(1<<WGM01)|(1<<WGM00);
TCCR0B|=(1<<CS02)|(1<<CS00); // Set prescaller 1024 and start timer
while(1)
{
measuredValue = adc_read(4);
printf("hodnota: %04d \r",measuredValue);
OCR0A=measuredValue/4;
}
return(0);
}
#include <avr/io.h>
void adc_init(void); // A/D converter initialization
unsigned int adc_read(char a_pin);
Pridajte sem aj zbalený kompletný projekt, napríklad takto (použite jednoznačné pomenovanie, nemôžeme mať na serveri 10x zdrojaky.zip:
Zdrojový kód: zdrojaky.zip
Overenie
Na používanie našej aplikácie stačia dve tlačítka a postup používania je opísaný v sekcii popis riešenia. Na konci uvádzame fotku záverečnej obrazovky pred resetom. Vypísaný je tu priemerný čas a najlepší čas.
Video:
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.