Table of Contents

Kooder

Seotud mooduliga: [HW] Mootorite moodul

See teegi osa sisaldab Kodulabori koodrite kasutamise funktsioone. Koodrite lugemine on katkestuste põhine, st koodri pulsside lugemisega tegeleb väline katkestus koodri viigul. See tähendab, et globaalsele peavad olema katkestused lubatud (koodri initsialiseerimine lubab ka katkestused).

Funktsioonid

Seadistab valitud koodri ja selle sisendviigud. Parameetrid:

Nullib valitud koodri ja käivitab loendamise. Parameetrid:

Koodri loendatud pulside arvu küsimine. Parameetrid:

 

Näide

//
// Kodulabori koodri kasutamise näide.
// LCD-le kuvatakse koodri klikkide arv..
//
#include <stdio.h>
#include <homelab/module/lcd_gfx.h>
#include <homelab/delay.h>
#include <homelab/module/encoders.h>
#include <homelab/module/buzzer.h>
#include <homelab/pin.h>
 
// Nupu viik
pin button2 = PIN(C, 1);
 
//
// Põhiprogramm
//
int main(void)
{
	unsigned short pulses = 0;
	char text[16];
 
	// Seab nupu töökorda
	pin_setup_input_with_pullup(button2);
 
	// Seadista kooder
	encoder_init(0);
 
	// Nulli ja käivita loendamine.
	encoder_reset_pulses(0);
 
	// LCD ekraani algseadistamine
	lcd_gfx_init();
 
	// Ekraani puhastamine
	lcd_gfx_clear();
 
	// Taustavalgustuse tööle lülitamine
	lcd_gfx_backlight(true);	
 
	// Programmi nime kuvamine
	lcd_gfx_goto_char_xy(3, 1);
	lcd_gfx_write_string("Kooder");
 
 
	// Lõputu tsükkel	
	while (true)
	{
		pulses = encoder_get_pulses(0);
 
 
		// Stringi moodustamine.
		sprintf(text, "Pulsse: %d",pulses);
 
 
		lcd_gfx_goto_char_xy(0, 3);
		lcd_gfx_write_string(text);
 
 
		// Nupp S2 alla vajutatud
	    if(!pin_get_debounced_value(button2))
		{
			// Nulli ja käivita loendamine.
			encoder_reset_pulses(0);
 
			// Tee piiksatus
			buzzer_sound (60, 100);
 
			// Kustuta eelmine number
			lcd_gfx_write_string("    ");
		} 
 
		// Tarkvaraline paus 10 millisekundit
		sw_delay_ms(10);
	}
}