/* program prebere iz predpomnilnika serijske komunikacije znak (ASCII koda) če prebere znak :
(ASCII 49) '1' izpišemo nazaj na Serijski port: utrip 1x
(ASCII 50) '1' izpišemo nazaj na Serijski port: utrip 2x
'+' izpišemo nazaj na Serijski port: LED on
'-' izpišemo nazaj na Serijski port: LED off
*/
/*#define LED 9
void setup() {
Serial.begin(115200);
Serial.println("Vpiši znak: ");
}
void loop() {
if (Serial.available()) {
char znak = Serial.read();
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(LED, HIGH);
break;
case '-':
Serial.println("LED off");
digitalWrite(LED, LOW);
break;
case '\n':
//Serial.println("Hvala <3");
break;
default:
Serial.println("Napačen znak");
break;
}
}
}
void utrip() {
digitalWrite(LED, HIGH);
delay(200);
digitalWrite(LED, LOW);
delay(200);
}*/
/* program prebere iz serijskega predpomnilnika znake (ASCII koda)
Prebrane znake pretvorimo v številčno vrednost in jo izpišemo
vrednost določi frekvenco utripanja LED diode.*/
/*#define LED 9
int zakasnitev;
void setup() {
Serial.begin(115200);
Serial.println("Vnesi zakasnitev diode: ");
}
void loop() {
static int temp;
if (Serial.available()) {
char znak = Serial.read();
if (znak <= '9' && znak >= '0') {
zakasnitev = (zakasnitev * 10) + (znak - '0');
}
else if (znak == 10) {
Serial.println(zakasnitev);
temp = zakasnitev;
zakasnitev = 0;
}
}
utrip(temp);
}
void utrip(int del) {
digitalWrite(LED, HIGH);
delay(del);
digitalWrite(LED, LOW);
delay(del);
}*/
/* podobno kot drugi program, vendar z omejitvijo, da lahko naenkrat preberemo samo 5 znakov.
*/
/*#define LED 9
#define MAX 5
int index = 0;
int zakasnitev; // za atol namesto int daš long
char seznam[6];
void setup() {
Serial.begin(115200);
Serial.println("Vnesi zakasnitev diode: ");
pinMode(LED, OUTPUT);
}
//void loop() {
if (Serial.available()) {
char znak = Serial.read();
for (int x = 0; x < 5) {
if (znak <= '9' && znak >= '0') {
zakasnitev = (zakasnitev * 10) + (znak - '0');
}
else if (znak == '\n') {
Serial.println()
}
}
}
}
//
void loop() {
if (Serial.available()) {
char znak = Serial.read();
if (znak <= '9' && znak >= '0' && index < MAX) {
seznam[index] = znak;
index ++;
}
else {
seznam[index] = 0; // seznam zaključimo z NULL terminatorjem
zakasnitev = atoi(seznam); // string v integer : atol (long)
Serial.println(zakasnitev);
index = 0; // prepišemo znake v seznamu z novimi vnosi
}
}
utrip(zakasnitev);
}
void utrip(int del) {
digitalWrite(LED, HIGH);
delay(del);
digitalWrite(LED, LOW);
delay(del);
}
DN: zgornjo nalogo reši z funkcijo millis.
*/
/* program prebere nize znakov v katerem so številke ločene z vejico.
Pretvorimo jih v celo število in nato zapišemo v seznam. V seznamu imamo
lahko zapisana le 3 števila, npr.: 14,23,454*/
#define seznamStevil 3 // v seznamu imamo lahko 3 števila
int stevilo[seznamStevil]; // seznam številk
int index = 0; // index seznama
void setup() {
Serial.begin(115200);
Serial.println("Vnesi tri števila, ločena z vejico: ");
}
void loop() {
if (Serial.available()) {
char znak = Serial.read();
if (znak <= '9' && znak >= '0') {
stevilo[index] = stevilo[index] * 10 + (znak - '0');
}
else if (znak == ',') {
if (index < seznamStevil - 1) index ++;
}
else {
Serial.println(index);
if (index >= seznamStevil) {
for (int i = 0; i < seznamStevil; i++) {
stevilo[i] = 0;
}
index = 0;
}
// izpis seznama števil na serijski port
Serial.println("Seznam števil: ");
for (int i = 0; i <= index; i++){
if (i == index) {
Serial.println(stevilo[i]);
stevilo[i] = 0;
}
else {
Serial.print(stevilo[i]);
Serial.print(",");
stevilo[i] = 0;
}
}
index = 0; // lahko preberemo tri nova števila
}
}
}
/* VAJA :::
/*Naloga 4:
Program prebere nize znakov v katerem so zpisane tudi vejice
znake med dvema vejicama pretvorimo v celo število in
število nato zapišemo v seznam tipa integer.
V seznamu imamo lahko zapisana samo tri števila npr.: 14,23,454 */
/*#define SEZNAMstevil 3 // v seznamu imamo lahko samo tri števila
int stevilo[SEZNAMstevil]; //sezam številk
int indeks = 0; // indeks seznama
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++;
}
else {
Serial.println("Seznam številk:");
if (indeks >= SEZNAMstevil){
for (int i = 0; i < SEZNAMstevil; i++) stevilo[i] = 0;
indeks = 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
}
}
}
*/
/*Naloga 3:
Podobno kot naloga 2, vendar z omejitvijo,
da lahko naenkrat prebere samo 5 znakov.
Znake preberemo v seznam
#define LED 9
#define MAX 5 // 5 prebranih znakov
int value = 0;
int indeks = 0; //indeks seznama
char seznam[6];
int utrip = 0; // za atol bi uporabili long
void setup(){
Serial.begin(9600);
Serial.println("Vpiši število: ");
pinMode(LED, OUTPUT);
}
void loop(){
if(Serial.available()){
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){ // DN: reši z uporabo funkcije millis
digitalWrite(LED, HIGH);
delay(x);
digitalWrite(LED, LOW);
delay(x);
}
*/
/*Naloga 2:
Program prenere iz serijskega predpomnilnika znake (ASCII koda).
Prebrane znake pretvotrimo v številčno vrednost in jo izpišemo na serijski port.
Vrednost določa frekvenco utripanja LED diode
#define LED 9
int value = 0;
void setup(){
Serial.begin(9600);
Serial.println("Vpiši število: ");
pinMode(LED, OUTPUT);
}
void loop(){
static int m = 0;
if(Serial.available()){
char znak = Serial.read();
if(znak >= '0' && znak <='9'){
value = (value * 10) + (znak -'0');//'2' - '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 1: Program prebere iz predpomnilnika serijske komunikacije znak (ASCII koda)
če prebere znak :
(ASCII 49) '1' izpišemo nazaj na Serijski port: utrip 1x
(ASCII 50) '2' izpišemo nazaj na Serijski port: utrip 2x
'+' izpišemo nazaj na Serijski port: LED on
'-' izpišemo nazaj na Serijski port: LED off
# define LED 9
void setup() {
Serial.begin(9600);
Serial.println("Vpiši znak: ");
pinMode(LED, 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(LED, HIGH);
break;
case '-':
Serial.println("LED off");
digitalWrite(LED, LOW);
break;
default :
Serial.println("Vpiši pravi znak.");
break;
}
}
}
void utrip(){
digitalWrite(LED, HIGH);
delay(300);
digitalWrite(LED, LOW);
delay(300);
}
*/