You are on page 1of 3

// PRIMER -Rad sa RGB diodama

const int CRVENI_PIN=11;


const int ZELENI_PIN=12;
const int PLAVI_PIN=13;

void setup()
{Serial.begin(9600);
pinMode(CRVENI_PIN,OUTPUT);
pinMode(ZELENI_PIN,OUTPUT);
pinMode(PLAVI_PIN,OUTPUT);
}

void loop()
{//osnovne_boje();
int boja;
while(Serial.available()==0);
delay(100);
boja=Serial.parseInt();
prikaz_RGB(boja);

void osnovne_boje() // prikaz osnovnih boja


{digitalWrite(CRVENI_PIN,LOW);
digitalWrite(ZELENI_PIN,LOW);
digitalWrite(PLAVI_PIN,LOW);
delay(2000);
digitalWrite(CRVENI_PIN,HIGH);
digitalWrite(ZELENI_PIN,LOW);
digitalWrite(PLAVI_PIN,LOW);
delay(2000);
digitalWrite(CRVENI_PIN,LOW);
digitalWrite(ZELENI_PIN,HIGH);
digitalWrite(PLAVI_PIN,LOW);
delay(2000);
digitalWrite(CRVENI_PIN,LOW);
digitalWrite(ZELENI_PIN,LOW);
digitalWrite(PLAVI_PIN,HIGH);
delay(2000);
digitalWrite(CRVENI_PIN,HIGH);
digitalWrite(ZELENI_PIN,LOW);
digitalWrite(PLAVI_PIN,HIGH);
delay(2000);
digitalWrite(CRVENI_PIN,HIGH);
digitalWrite(ZELENI_PIN,HIGH);
digitalWrite(PLAVI_PIN,LOW);
delay(2000);
digitalWrite(CRVENI_PIN,LOW);
digitalWrite(ZELENI_PIN,HIGH);
digitalWrite(PLAVI_PIN,HIGH);
delay(2000);
}

void prikaz_RGB(int boja) // prikaz jedne boje iz spektra


{int vrednost_crvene;
int vrednost_zelene;
int vrednost_plave;
if (boja<255)
{vrednost_crvene=255-boja;
vrednost_zelene=boja;
vrednost_plave=0;
}
else if (boja<511)
{vrednost_crvene=0;
vrednost_zelene=255-(boja-256);
vrednost_plave=boja-256;
}
else
{vrednost_crvene=boja-512;
vrednost_zelene=0;
vrednost_plave=255-(boja-256);
}
analogWrite(CRVENI_PIN, vrednost_crvene);
analogWrite(ZELENI_PIN, vrednost_zelene);
analogWrite(PLAVI_PIN, vrednost_plave);
}
//------------------------------------------------------------------------------
// PRIMER -ENKODER sa brojanjem impulsa u LOOP funkciji
const int ulazA=2;
const int ulazB=3;
int tempA, staro_stanjeA=0,broj_impulsa=0;
boolean smer;
void setup()
{pinMode(ulazA, INPUT);
pinMode(ulazB,INPUT);
Serial.begin(9600);
}
void loop()
{tempA=digitalRead(ulazA);
if (staro_stanjeA!=tempA)// detektovanje rastuce/opadajuce ivice signala na pinu A
{
if(digitalRead(ulazB)!=tempA)// detektovanje smera obrtanja enkodera
{broj_impulsa++;
smer=true;
}
else
{
broj_impulsa--;
smer=false;
}
if (smer== true) Serial.println("desno");
else Serial.println("levo");
Serial.print("broj_impulsa:");
Serial.println(broj_impulsa);
}
staro_stanjeA=tempA;
}
//--------------------------------------------
//PRIMER -ENKODER sa brojanjem impulsa u interapt funkciji
const int ulazA=2;
const int ulazB=3;
const int CRVENI_PIN=11;
int tempA, staro_stanjeA=0;
byte broj_impulsa=0;
boolean smer;
void setup()
{pinMode(ulazA, INPUT);
pinMode(ulazB,INPUT);

attachInterrupt(digitalPinToInterrupt(ulazA),funkcija_interapta,RISING);//podesavanje
interapta
pinMode(CRVENI_PIN,OUTPUT);
Serial.begin(9600);
}
void loop()
{
analogWrite(CRVENI_PIN, broj_impulsa);
delay(1000);
}
void funkcija_interapta()
{
if(digitalRead(ulazB)==true){
broj_impulsa++;
smer=true;
}
else
{
broj_impulsa--;
smer=false;
}
if (smer== true) Serial.println("desno");
else Serial.println("levo");
Serial.print("broj_impulsa:");
Serial.println(broj_impulsa);
}

You might also like