Esercitazione 2 - 6

Dependencies:   mbed

main.cpp

Committer:
MDevolution
Date:
2016-10-10
Revision:
0:b602ba967328

File content as of revision 0:b602ba967328:

#include "mbed.h"

AnalogIn fotores_left(A0);
AnalogIn fotores_right(A1);
PwmOut PWM1(D5);
PwmOut PWM2(D6);

const float Soglia_buio=0.40;
const float Soglia_uniformita=0.120;
const float alfa=5;

void control_led(float val1, float val2);

int main (){
    PWM1.period(0.001);
    PWM2.period(0.001);
    float val1=0;
    float val2=0;
    while (1){
        val1=fotores_left.read();
        val2=fotores_right.read();
        control_led(val1,val2);
        wait(0.1);
    }
}

void control_led(float val1, float val2){
    if((val2>Soglia_buio)||(val1>Soglia_buio)){
        if(abs(val2-val1)<Soglia_uniformita) {    // se la luce è uniforme su entrambe le fotoresistenze
            PWM1=1;
            PWM2=1;
        }else{
            if((val1-val2)>0) {
                float a=1-(alfa*(val1-val2));
                if (a<0){
                    a=0;
                }
                PWM1=a;
                PWM2=1;
                //wait (0.1);
            }else{
                PWM1=1;
                float a=1-(alfa*(val2-val1));
                if (a<0){
                    a=0;
                }
                PWM2=a;
                //wait (0.1);
            }
        } 
    } else { 
        PWM1=0;
        PWM2=0; 
    }
}