Useful code samples

Needs translation

Kasulikud koodijupid on abiks õpetajale erinevate ülesannete lahendusena või täiendavate näidetena. Koodinäited on täisprogrammid, mis tähendab, et kopeerides konkreetse näite programmeerimiskeskkonda, saab selle kompileerida ja kontrollerisse laadida. Tähele tuleks panna, millised moodulid on konkreetse näite juures kasutusel ja millistesse viikudesse on parasjagu mingi seade (mootor, andur, jne) ühendatud.

Graafilise LCD erisümbolid

// Näitekood käib läbi kõik kuni 255 erinevat LCD sümbolit
// ja kuvab need koos LCD koodiga ekraanile
// Riistvara: Kontrollerplaat, Kasutajaliidese plaat, Anduriplaat
// Autor: Raivo Sell 2011
 
#include <stdio.h>
#include <homelab/delay.h>
#include <homelab/module/lcd_gfx.h>
 
//
// Põhiprogramm
//
int main(void)
{
    signed short number=0;   
 
    char text[16];
 
    // LCD ekraani seadistamine
    lcd_gfx_init();
    lcd_gfx_clear();
 
    // Taustavalgustuse tööle lülitamine
    lcd_gfx_backlight(true);    
 
    // Programmi nime kuvamine
    lcd_gfx_goto_char_xy(1, 1);
    lcd_gfx_write_string("Charecter map");
 
    // Lõputu tsükkel
    while (true)
    {
        sprintf(text, "%i - %c ", number, number);
        // Teksti kuvamine LCD teise rea alguses
        lcd_gfx_goto_char_xy(1, 2);
        lcd_gfx_write_string(text);
        number++;
        sw_delay_ms(500);
 
    }
}

Potentsiomeetriga märgi valimine

// Potentsiomeetriga märgi valimine
// Riistvara: Kontrollerplaat, Kasutajaliidese plaat, Anduriplaat
// Autor: Raivo Sell 2011
 
#include <stdio.h>
#include <homelab/adc.h>
#include <homelab/module/lcd_gfx.h>
 
//
// Põhiprogramm
//
int main(void)
{
    unsigned short value;
    char text[16];
 
    // LCD ekraani seadistamine
    lcd_gfx_init();
    lcd_gfx_clear();
 
    // Taustavalgustuse tööle lülitamine
    lcd_gfx_backlight(true);    
 
    // Programmi nime kuvamine
    lcd_gfx_goto_char_xy(1, 1);
    lcd_gfx_write_string("Pote tekst");
 
    // ADC muunduri seadistamine
    adc_init(ADC_REF_AVCC, ADC_PRESCALE_8);
 
    // Lõputu tsükkel
    while (true)
    {
        value = adc_get_average_value(3, 4);
 
        value=value/10+25;
        sprintf(text, "%i - %c ", value, value);
 
        // Teksti kuvamine LCD teise rea alguses
        lcd_gfx_goto_char_xy(1, 2);
        lcd_gfx_write_string(text);
    }
}

7-Segment lõpmatu loendamine

//
// 7-segmendilise indikaatori näidisprogrammi täiendus
// Kasutatakse mooduliga jagamist, ehk segmendil näidatakse 
// ainult jagamise jääki. Nii on mis tahes counter väärtuse korral 
// jääk alati ühekohaline arv.
// Riistvara: Kontrollerplaat, Kasutajaliidese plaat
// Autor: Mikk Leini 2009
 
//
#include <homelab/module/segment_display.h>
#include <homelab/delay.h>
 
//
// Põhiprogramm
//
int main(void)
{
	int counter = 0;
 
	// 7-segmendilise indikaatori seadistamine
	segment_display_init();
 
	// Lõputu tsükkel
	while (true)
	{
		// Loenduri üheliste väärtuse näitamine
		segment_display_write(counter % 10);
 
		// Loendamine väga pikalt
		counter++;
 
		// Paus 1 sekund
		sw_delay_ms(1000);
	}
}

Mootori kiiruse reguleerimine

// Näidisprogramm, mis demonstreerib mootori kiiruse muutmist. 
// Nupp S1 suurendab ja nupp S2 vähendab esimese mootori kiirust. 
// Mootori pöörlemissuunda muudab nupp S3.
// Riistvara: Kontrollerplaat, Kasutajaliidese plaat, 
//            Mootoriplaat, Alalisvoolu mootor
// Autor: Heiko Pikner 2012
 
#include <homelab/delay.h>
#include <homelab/pin.h>
#include <homelab/module/motors.h>
 
// Nuppude viigud
pin button1 = PIN(C, 0);
pin button2 = PIN(C, 1);
pin button3 = PIN(C, 2);
 
 
int main(void)
{
  unsigned char speed = 0;
  signed char direction = -1;
  unsigned char new_value1, old_value1 = 0;
 
 
	// Seab nupud töökorda
	pin_setup_input_with_pullup(button1);
	pin_setup_input_with_pullup(button2);
	pin_setup_input_with_pullup(button3);
 
 
	// Mootori initsialiseerimine
  	dcmotor_drive_pwm_init(0);
 
  	while(1)
  	{   	
		// Loeb nupu S3 väärtuse
   		new_value1 = pin_get_debounced_value(button3);
 
		// Nupp S1 alla vajutatud
		if(!pin_get_debounced_value(button1))
		{
			// Suurendab kiirust
			if(speed < 255)
			{
				speed++;
			}						
 
		}
 
		// Nupp S2 alla vajutatud
	        if(!pin_get_debounced_value(button2))
		{
			// Vähendab kiirust
			if(speed > 255)
			{
				speed--;
			}	
 
		}
 
		// Nupp S3 alla vajutatud. Registreeritakse ainult üks vajutus.
		if((!new_value1) && (old_value1))
		{
			// Pöörlemissuuna vahetamine
			if(direction == 1)
			{
				direction = -1;
			}
			else
			{
				direction = 1;		
			}
 
		}		
 
		// Jätab eelmise nupu S3 väärtuse meelde
		old_value1 = new_value1;		
 
		// Mootorile valitud kiiruse etteandmine
		dcmotor_drive_pwm(0, direction, speed);		
 
		sw_delay_ms(2);		      
  	}
}
en/supervisors/demos.txt · Last modified: 2020/07/20 14:26 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0