Differences

This shows you the differences between two versions of the page.

Link to this comparison view

et:examples:setup:test [2011/01/31 16:57] – tekitatud raivo.sellet:examples:setup:test [2020/07/20 12:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +<code c>
  
 +#include <stdio.h>
 +#include <util/delay.h>
 +#include <homelab/adc.h>
 +#include <homelab/module/lcd_gfx.h>
 +#include <homelab/module/segment_display.h>
 +#include <homelab/module/motors.h>
 +#include <homelab/module/encoders.h>
 +#include <homelab/module/sensors.h>
 +#include "homelab/common.h"
 +#include "homelab/pin.h"
 +
 +#define ULTRASONIC_SPEED_OF_SOUND    33000 // cm/s
 +
 +
 +
 +/////////////////////////   Peaprogramm  /////////////////////////////
 + 
 +int main(void)
 +{
 +    char adc0[16],adc1[16],adc2[16],caption0[16],caption1[16];
 +    unsigned char new_value=0, old_value = 1,new_value0=0, old_value0 = 1,new_value2=0, old_value2 = 1,i,lcd_taust=0;
 +    int servopos=1, dcpos=1,nupp=0,nupp1=0,nupp2=0,loendur=0, dcpulse=0; 
 +
 +///////////////////////   Init   ///////////////////
 +   
 + //bipolar_init();
 +    lcd_gfx_init();
 +    lcd_gfx_clear();
 +    adc_init(ADC_REF_AVCC, ADC_PRESCALE_8);
 +    segment_display_init();
 +    pin leds[3]    = { PIN(C, 3), PIN(C, 4), PIN(C, 5) };
 +    pin buttons[3] = { PIN(C, 0), PIN(C, 1), PIN(C, 2) };
 +    pin led_red = PIN(C, 5);
 +    pin sensors = PIN(G, 0);
 +    //pin srf05 = PIN(F,2);
 +
 +    pin_setup_output(sensors);
 +
 +    for (i = 0; i < 3; i++)
 +    {
 +        pin_setup_output(leds[i]);
 +        pin_setup_input(buttons[i]);
 + dcmotor_init(i);
 +    }
 + dcmotor_init(3);
 + encoder_init(0);
 + encoder_init(1);
 +///////////////////////////  Programmi tsükkel //////////////////////////////// 
 +    while (true)
 +    {
 +        new_value0 = pin_get_value(buttons[0]);
 +        if ((new_value0) && (!old_value0))
 +        {
 +            //nupp = PINC & 0x07;
 +            nupp++;
 +            if (nupp>4) nupp=0;
 +            pin_toggle(leds[0]);
 + lcd_gfx_clear();
 +        }
 +        old_value0 = new_value0;
 +
 +        //sprintf(t,"%d",nupp);
 +
 +        if (nupp==0){
 +            sprintf(caption0,  Robotic     ");
 +            sprintf(caption1, HomeLab v5   ");
 +            sprintf(adc0, "S1 MODULES   ");
 +            sprintf(adc1, "S2 DEVICES   ");
 +            sprintf(adc2, "S3 FUNCTIONS ");
 +        }
 +////////////////////////// Kasutajaliidese moodul /////////////////////////////////////////////////////
 +
 +        else if (nupp==1){
 +                new_value = pin_get_value(buttons[1]);
 +                if ((new_value) && (!old_value))
 +                {
 +                    //bit_invert(nupp1,0);
 + nupp1=1;
 +                    lcd_gfx_clear();
 +                }
 +                old_value = new_value;
 +
 +                new_value2 = pin_get_value(buttons[2]);
 +                if ((new_value2) && (!old_value2))
 +                {
 +                    //bit_invert(nupp2,0);
 +                    lcd_gfx_clear();
 + nupp1=2;
 +                }
 +                old_value2 = new_value2;
 +                 
 +                if (nupp1==1) {
 + pin_clear(leds[1]);
 + pin_set(leds[2]);
 + lcd_taust=1;
 +                    sprintf(caption1,      S2   ");
 +                }
 +                else if (nupp1==2) {
 + pin_set(leds[1]);
 + pin_clear(leds[2]);
 + lcd_taust=0;
 +                    sprintf(caption1,      S3   ");
 +                }
 +                else {
 + pin_set(leds[1]);
 + pin_set(leds[2]);
 +                    sprintf(caption1,      S1   ");
 + nupp1=0;
 +                }                
 + //segment_display_write(loendur++ % 10);
 +                
 + sprintf(adc0, "S1: %d ", pin_get_value(buttons[0]));
 +                sprintf(adc1, "S2: %d ", pin_get_value(buttons[1]));
 +                sprintf(adc2, "S3: %d ", pin_get_value(buttons[2]));
 + sprintf(caption0,  UI module  ");
 +                _delay_ms(100); 
 +        }
 +////////////////////////// Andurite moodul /////////////////////////////////////////////////////
 +
 +        else if (nupp==2){
 +                new_value = pin_get_value(buttons[1]);
 +                if ((new_value) && (!old_value))
 +                {
 +                    bit_invert(nupp1,0);
 +                    lcd_gfx_clear();
 +                }
 +                old_value = new_value;
 +                
 +                if (nupp1) {
 +                    pin_clear(sensors);
 +                    pin_clear(leds[0]);
 +                    sprintf(caption1,  on-board   ");
 +                    sprintf(adc0, "Sound: %d ADC  ", adc_get_average_value(0, 4));
 +                    sprintf(adc1, "Light: %d ADC  ", adc_get_average_value(1, 4));
 +                    sprintf(adc2, "Temp.: %d C    ", thermistor_calculate_celsius(adc_get_average_value(2, 4)));
 + //sprintf(adc2, "Temp.: %d ADC    ", adc_get_average_value(2, 4));
 +                }
 +                else {
 +                    pin_set(sensors);
 +                    pin_set(leds[0]);
 +                    sprintf(caption1,  external   ");
 +                    sprintf(adc0, "IR: %d cm     ", ir_distance_calculate_cm(GP2Y0A21YK, adc_get_average_value(3, 4)) );
 +                    //sprintf(adc1, "UH: %d cm    ", ultrasonic_measure_srf05(srf05));
 +                    sprintf(adc1, "UH: %d ADC    ", adc_get_average_value(2, 4));
 +                    sprintf(adc2, "EX: %d ADC    ", adc_get_average_value(1, 4));
 +                }
 +                //segment_display_write(adc_get_average_value(3, 4) * 10 / 1024);
 +                sprintf(caption0, "Sensor module ");
 +                _delay_ms(500); 
 +        }
 +///////////////////////// Mootorite moodul  /////////////////////////////////////////////////////////7
 +        else if (nupp==3){
 +                
 +                sprintf(caption0,  Motors    ");
 +                sprintf(caption1,  module    ");
 +                sprintf(adc0, "DC    %d dir   ", dcpulse );
 +                sprintf(adc1, "Servo %d pos   ", servopos );
 +                sprintf(adc2, "Step. %d dir   ", dcpos );
 +                
 +                
 +                
 +                servopos++;
 +                if (servopos>100) { 
 +                    servopos=-100;  
 +                    dcpos=dcpos*-1;  
 +                    pin_toggle(leds[0]);            
 +                }
 +
 +                dcmotor_drive(0,dcpos);
 + dcmotor_drive(1,dcpos);
 + dcmotor_drive(2,dcpos);
 + dcmotor_drive(3,dcpos);
 +        dcpulse=encoder_get_pulses(0);
 +                //servomotor_position(0,servopos);
 + 
 +
 +        }
 +////////////////////////////// Kommunikatsioonimoodul  ////////////////////////////////////////////////////7
 +        else if (nupp==4){
 +            sprintf(caption0, "Communication");
 +            sprintf(caption1,  module    ");
 +            sprintf(adc0, " View others  ");
 +            sprintf(adc1,             ");
 +            sprintf(adc2,             ");
 +            //pin_toggle(led_red);
 +            //sw_delay_ms(500);
 +        }
 +        
 +        else {
 +            pin_toggle(led_red);
 +            _delay_ms(500); 
 +        }
 +////////////////  OUTPUT to LCD ////////////////////////////////////////////////////////        
 +
 +        //lcd_gfx_goto_char_xy(0, 2);
 +        //lcd_gfx_write_string(t);
 + segment_display_write(nupp);
 + lcd_gfx_backlight(lcd_taust);
 +        lcd_gfx_goto_char_xy(0, 0);
 +        lcd_gfx_write_string(caption0);
 +        lcd_gfx_goto_char_xy(0, 1);
 +        lcd_gfx_write_string(caption1);
 +        lcd_gfx_goto_char_xy(0, 3);
 +        lcd_gfx_write_string(adc0);
 +        lcd_gfx_goto_char_xy(0, 4);
 +        lcd_gfx_write_string(adc1);
 +        lcd_gfx_goto_char_xy(0, 5);
 +        lcd_gfx_write_string(adc2);
 +        
 +    }
 +}
 +
 +</code>
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