//program prebere iz predpomnilnika serijske komunikacije znak(ASCII)
//Če prebere znak:
// 1 izpišemo nazaj na serijski port utrip 1x
// 2 izpišemo nazaj na serijski port: utrip 2x
//+ izpišemo: LED on
//- izpišemo: LED off
#define ledPin 11
void setup() {
Serial.begin(9600);
Serial.println("Vpiši znak: ");
pinMode(ledPin, OUTPUT);
}
void loop() {
if(Serial.available()){ // ali je v predpomnilniku mikrokrmilnika kakšen znak
char znak = Serial.read();// preberemo en znak iz predpomnilnika
switch(znak){
case '1':
Serial.println("utrip 1x");
utrip();
break;
case '2':
Serial.println("utrip 2x");
utrip();
utrip();
break;
case '+':
Serial.println("LED on");
digitalWrite(ledPin, HIGH);
break;
case '-':
Serial.println("LED off");
digitalWrite(ledPin, LOW);
break;
default:
Serial.println("Vpiši pravi znak!");
break;
}
}
}
void utrip(){
digitalWrite(ledPin, HIGH);
delay(300);
digitalWrite(ledPin, LOW);
delay(300);
}
//naloga 2
//program prebere iz serijskega porta predpomnilnika znake
//prebrane znake pretvorimo v številčno vrednost in jo izpišemo na serijskem portu
//vrednost določa frekvenco utripanja LED diode
/*
#define LED 11
int value;
void setup(){
Serial.begin(9600);
Serial.println("Vpiši številko: ");
pinMode(LED, OUTPUT);
}
void loop(){
static int m;
if(Serial.available()){
char znak = Serial.read();
if(znak >= '0' && znak <= '9'){
value = (value * 10) + (znak - '0');
}
else if(znak == 10){
Serial.println(value);
m = value;
value = 0;
}
}
utripanje(m);
}
void utripanje(int x){
digitalWrite(LED, HIGH);
delay(x);
digitalWrite(LED, LOW);
delay(x);
}
*/
//naloga 3
//Podobno kot 2. naloga, vender z omejitvijo, da lahko naenkrat prebere samo 5 znakov.
//znake preberemo v seznam
/*
#define LED 11
#define MAX 5//5 prebranih znakov
int value;
int indeks = 0;//index seznama
char seznam[6];
int utrip = 0;
void setup(){
Serial.begin(9600);
Serial.println("Vpiši številko: ");
pinMode(LED, OUTPUT);
}
void loop(){
static int m;
if(Serial.available()){33
char znak = Serial.read();
if(znak >= '0' && znak <= '9' && indeks < MAX){
seznam[indeks] = znak;
indeks++;
}
else{
seznam[indeks] = 0; // seznam zaključimo z NULL terminatorjem
utrip = atoi(seznam); // string v integer; atol long
Serial.println(utrip);
indeks = 0; // prepišemo znake v seznamu z novim vnosom
}
}
utripanje(utrip);
}
void utripanje(int x){
digitalWrite(LED, HIGH);
delay(x);
digitalWrite(LED, LOW);
delay(x);
}
*/
//naloga 4
// program prebere nize znakov v katerem so zapisane tudi vejice
//znake med dvema vejicama pretvorimo v celo število in
//število nato zapišemo v seznam
//v seznamu inđmamo lahko zapisana samo 3 števila naprimer: 14, 23,454
/*
#define SEZNAMstevil 3 // v seznamu imamo lahko samo tri števila
int stevilo[SEZNAMstevil]; //sezam številk
int indeks = 0; // indeks seznama
int vejica;
void setup(){
Serial.begin(9600);
Serial.println("Vpisi tri stevila, locena z vejico.");
}
void loop(){
if(Serial.available()){
char znak = Serial.read();
if(znak >= '0' && znak <='9'){
stevilo[indeks] = (stevilo[indeks] *10) + (znak -'0');
}
else if (znak == ','){
if(indeks < SEZNAMstevil -1) indeks++;
vejica++;
}
else {
Serial.println("Seznam številk:");
if (vejica >= SEZNAMstevil){
for (int i = 0; i < SEZNAMstevil; i++) stevilo[i] = 0;
vejica = 0;
}
// izpis seznama števil na serijski port
for (int i = 0; i <= indeks; i++){
Serial.print(stevilo[i]);
Serial.print(",");
stevilo[i] = 0; // zbrišemo število v seznamu
}
indeks = 0; // lahko preberemo tri nova števila
}
}
}*/