Differences

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

Link to this comparison view

pm:prj2022:arosca:senzorgaze [2022/05/29 21:36]
dumitru_razvan.dinu [Bibliografie/Resurse]
pm:prj2022:arosca:senzorgaze [2022/05/29 21:37] (current)
dumitru_razvan.dinu [Software Design]
Line 38: Line 38:
 Totodata, am cosiderat numarul 700 ca valoare de referinta pentru declansarea buzzerului, astfel, cand senzorul transmite o valoare superioara, noi vom fi notificati prin inceperea melodiei Merry Christmas (am presupus ca vine Craciunul mai repede pentru persoana in cauza :)). Totodata, am cosiderat numarul 700 ca valoare de referinta pentru declansarea buzzerului, astfel, cand senzorul transmite o valoare superioara, noi vom fi notificati prin inceperea melodiei Merry Christmas (am presupus ca vine Craciunul mai repede pentru persoana in cauza :)).
 Aplicatia mobila am realizat-o pe platforma MIT App Inventor. Aplicatia mobila am realizat-o pe platforma MIT App Inventor.
 +
 +<​code>​
 +
 +#include <​ezBuzzer.h>​
 +#define Dig1 13
 +#define Dig2 12
 +#define Dig3 11
 +#define Dig4 10
 +#define DIGIT_ON LOW
 +#define DIGIT_OFF HIGH
 +#define DISPLAY_BRIGHTNESS 5000
 +boolean duiz = false;
 +boolean hon = false;
 +#define segA 2
 +#define segB 3
 +#define segC 4
 +#define segD 5
 +#define segE 6
 +#define segF 7
 +#define segG 8
 +ezBuzzer buzzer(9);
 +const int nr = A0;
 +
 +int melody[] = {
 +  NOTE_C5, //1
 +  NOTE_F5, NOTE_F5, NOTE_G5, NOTE_F5, NOTE_E5,
 +  NOTE_D5, NOTE_D5, NOTE_D5,
 +  NOTE_G5, NOTE_G5, NOTE_A5, NOTE_G5, NOTE_F5,
 +  NOTE_E5, NOTE_C5, NOTE_C5,
 +  NOTE_A5, NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_G5,
 +  NOTE_F5, NOTE_D5, NOTE_C5, NOTE_C5,
 +  NOTE_D5, NOTE_G5, NOTE_E5,
 +  ​
 +  NOTE_F5, NOTE_C5, //8 
 +  NOTE_F5, NOTE_F5, NOTE_G5, NOTE_F5, NOTE_E5,
 +  NOTE_D5, NOTE_D5, NOTE_D5,
 +  NOTE_G5, NOTE_G5, NOTE_A5, NOTE_G5, NOTE_F5,
 +  NOTE_E5, NOTE_C5, NOTE_C5,
 +  NOTE_A5, NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_G5,
 +  NOTE_F5, NOTE_D5, NOTE_C5, NOTE_C5,
 +  NOTE_D5, NOTE_G5, NOTE_E5,
 +  NOTE_F5, NOTE_C5,
 +
 +  NOTE_F5, NOTE_F5, NOTE_F5,//​17
 +  NOTE_E5, NOTE_E5,
 +  NOTE_F5, NOTE_E5, NOTE_D5,
 +  NOTE_C5, NOTE_A5,
 +  NOTE_AS5, NOTE_A5, NOTE_G5,
 +  NOTE_C6, NOTE_C5, NOTE_C5, NOTE_C5,
 +  NOTE_D5, NOTE_G5, NOTE_E5,
 +  NOTE_F5, NOTE_C5, ​
 +  NOTE_F5, NOTE_F5, NOTE_G5, NOTE_F5, NOTE_E5,
 +  NOTE_D5, NOTE_D5, NOTE_D5,
 +  ​
 +  NOTE_G5, NOTE_G5, NOTE_A5, NOTE_G5, NOTE_F5, //27
 +  NOTE_E5, NOTE_C5, NOTE_C5,
 +  NOTE_A5, NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_G5,
 +  NOTE_F5, NOTE_D5, NOTE_C5, NOTE_C5,
 +  NOTE_D5, NOTE_G5, NOTE_E5,
 +  NOTE_F5, NOTE_C5,
 +  NOTE_F5, NOTE_F5, NOTE_F5,
 +  NOTE_E5, NOTE_E5,
 +  NOTE_F5, NOTE_E5, NOTE_D5,
 +  ​
 +  NOTE_C5, NOTE_A5,//​36
 +  NOTE_AS5, NOTE_A5, NOTE_G5,
 +  NOTE_C6, NOTE_C5, NOTE_C5, NOTE_C5,
 +  NOTE_D5, NOTE_G5, NOTE_E5,
 +  NOTE_F5, NOTE_C5, ​
 +  NOTE_F5, NOTE_F5, NOTE_G5, NOTE_F5, NOTE_E5,
 +  NOTE_D5, NOTE_D5, NOTE_D5,
 +  NOTE_G5, NOTE_G5, NOTE_A5, NOTE_G5, NOTE_F5, ​
 +  NOTE_E5, NOTE_C5, NOTE_C5,
 +  ​
 +  NOTE_A5, NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_G5,//​45
 +  NOTE_F5, NOTE_D5, NOTE_C5, NOTE_C5,
 +  NOTE_D5, NOTE_G5, NOTE_E5,
 +  NOTE_F5, NOTE_C5,
 +  NOTE_F5, NOTE_F5, NOTE_G5, NOTE_F5, NOTE_E5,
 +  NOTE_D5, NOTE_D5, NOTE_D5,
 +  NOTE_G5, NOTE_G5, NOTE_A5, NOTE_G5, NOTE_F5,
 +  NOTE_E5, NOTE_C5, NOTE_C5,
 +  ​
 +  NOTE_A5, NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_G5, //53
 +  NOTE_F5, NOTE_D5, NOTE_C5, NOTE_C5,
 +  NOTE_D5, NOTE_G5, NOTE_E5,
 +  NOTE_F5, 0
 +};
 +
 +// note durations: 4 = quarter note, 8 = eighth note, etc, also called tempo:
 +int noteDurations[] = {
 +4,
 +4, 8, 8, 8, 8,
 +4, 4, 4,
 +4, 8, 8 ,8, 8,
 +4, 4, 4,
 +4, 8, 8 ,8, 8,
 +4, 4, 8, 8,
 +4, 4, 4,
 +2, 4,
 +4, 8, 8, 8, 8,
 +4, 4, 4,
 +4, 8, 8, 8, 8,
 +4, 4, 4,
 +4, 8, 8, 8, 8,
 +4, 4, 8, 8,
 +4, 4, 4,
 +2, 4,
 +4, 4, 4,
 +2, 4,
 +4, 4, 4,
 +2, 4,
 +4, 4, 4,
 +4, 4, 8, 8,
 +4 , 4, 4,
 +2, 4, 
 +4, 8, 8, 8, 8,
 +4, 4, 4,
 +4, 8, 8, 8, 8,
 +4, 4, 4,
 +4, 8, 8, 8, 8,
 +4, 4, 8, 8, 
 +4, 4, 4,
 +2, 4,
 +4, 4, 4,
 +2, 4,
 +4, 4, 4,
 +2, 4,
 +4, 4, 4,
 +4, 4, 8, 8,
 +4, 4, 4,
 +2, 4, 
 +4, 8, 8, 8, 8,
 +4, 4, 4, 
 +4, 8, 8, 8, 8,
 +4, 4, 4,
 +4, 8, 8, 8, 8,
 +4, 4, 8, 8, 
 +4, 4, 4, 
 +2, 4, 
 +4, 8, 8, 8, 8,
 +4, 4, 4,
 +4, 8, 8, 8, 8, 
 +4, 4, 4, 
 +4, 8, 8, 8, 8,
 +4, 4, 8, 8, 
 +4, 4, 4, 
 +2, 4
 +};
 +void setup()
 +{
 +   ​pinMode(segA,​ OUTPUT);
 +   ​pinMode(segB,​ OUTPUT);
 +   ​pinMode(segC,​ OUTPUT);
 +   ​pinMode(segD,​ OUTPUT);
 +   ​pinMode(segE,​ OUTPUT);
 +   ​pinMode(segF,​ OUTPUT);
 +   ​pinMode(segG,​ OUTPUT);
 +   ​pinMode(Dig1,​ OUTPUT);
 +   ​pinMode(Dig2,​ OUTPUT);
 +   ​pinMode(Dig3,​ OUTPUT);
 +   ​pinMode(Dig4,​ OUTPUT);
 +   ​Serial.begin(9600);​
 +   ​pinMode(nr,​ INPUT);
 +}
 +void loop()
 +{
 + ​buzzer.loop();​
 + int number;
 + int x = analogRead(nr);​
 + ​Serial.print(x);​
 + 
 + duiz = false;
 + hon = false;
 + ​showNumber(x);​
 + if (x > 700) {
 +    if (buzzer.getState() == BUZZER_IDLE) {
 +      int length = sizeof(noteDurations) / sizeof(int);​
 +      buzzer.playMelody(melody,​ noteDurations,​ length); // playing
 +    }
 +  }
 +
 +  if (x <= 700) {
 +    if (buzzer.getState() != BUZZER_IDLE) {
 +      buzzer.stop() ; // stop
 +    }
 +  }
 +}
 +
 +void showNumber(int x) {
 +  for(int k = 0; k<50; k++){ // for loop to slow it down.
 +
 +   int figur = x;
 +   ​for(int digit = 1 ; digit < 5 ; digit++) { //for loop to place the number in the right digit
 +     ​switch(digit) {
 +       case 1:
 +       ​if(figur > 999){
 +         ​digitalWrite(Dig1,​ DIGIT_ON);
 +         ​lightNumber(figur / 1000); // for example 2511 / 1000 = 2
 +         figur %= 1000; // new value of figur = 511 figur = figur %1000
 +        ​
 +         ​delayMicroseconds(DISPLAY_BRIGHTNESS);​
 +         if (figur < 100){
 +          duiz = true;
 +         if (figur <10){
 +          hon = true;
 +         }
 +        ​
 +         }else duiz = false;
 +       }
 +      ​
 +       ​break;​
 +       case 2:
 +       ​if(duiz == true){
 +          digitalWrite(Dig2,​ LOW);
 +          lightNumber(0);​
 +          delayMicroseconds(DISPLAY_BRIGHTNESS);​
 +        ​
 +       ​}if(hon == true){
 +          break;
 +       }
 +      ​
 +       ​if(figur > 99 && figur < 1000){
 +         ​digitalWrite(Dig2,​ LOW);
 +         ​lightNumber(figur / 100);
 +         figur %= 100;
 +         ​delayMicroseconds(DISPLAY_BRIGHTNESS);​
 +         if (figur < 10){
 +          hon = true;
 +        ​
 +         }else hon = false;
 +       }
 +       ​break;​
 +       case 3:
 +       ​if(hon == true){
 +         ​digitalWrite(Dig3,​ LOW);
 +         ​lightNumber(0);​
 +         ​delayMicroseconds(DISPLAY_BRIGHTNESS);​
 +         ​break;​
 +       }
 +      ​
 +       ​if(figur > 9 && figur < 100){
 +         ​digitalWrite(Dig3,​ LOW);
 +         ​lightNumber(figur / 10);
 +         figur %= 10;
 +         ​delayMicroseconds(DISPLAY_BRIGHTNESS);​
 +       }
 +      ​
 +       ​break;​
 +       case 4:
 +       ​if(figur < 10){
 +         ​digitalWrite(Dig4,​ LOW);
 +         ​lightNumber(figur);​
 +         ​delayMicroseconds(DISPLAY_BRIGHTNESS);​
 +         ​break;​
 +       }
 +     }
 +     //​Turn off all segments
 +     ​lightNumber(10);​
 +     //​Turn off all digits
 +     ​digitalWrite(Dig1,​ DIGIT_OFF);
 +     ​digitalWrite(Dig2,​ DIGIT_OFF);
 +     ​digitalWrite(Dig3,​ DIGIT_OFF);
 +     ​digitalWrite(Dig4,​ DIGIT_OFF);
 +  ​
 +    }
 +  }
 +}
 +
 +
 +void lightNumber(int numberToDisplay) {
 +  #define SEGMENT_ON LOW
 +  #define SEGMENT_OFF HIGH
 +  switch (numberToDisplay){
 +   case 0:
 +   ​digitalWrite(segA,​ SEGMENT_ON);​
 +   ​digitalWrite(segB,​ SEGMENT_ON);​
 +   ​digitalWrite(segC,​ SEGMENT_ON);​
 +   ​digitalWrite(segD,​ SEGMENT_ON);​
 +   ​digitalWrite(segE,​ SEGMENT_ON);​
 +   ​digitalWrite(segF,​ SEGMENT_ON);​
 +   ​digitalWrite(segG,​ SEGMENT_OFF);​
 +   ​break;​
 +   case 1:
 +   ​digitalWrite(segA,​ SEGMENT_OFF);​
 +   ​digitalWrite(segB,​ SEGMENT_ON);​
 +   ​digitalWrite(segC,​ SEGMENT_ON);​
 +   ​digitalWrite(segD,​ SEGMENT_OFF);​
 +   ​digitalWrite(segE,​ SEGMENT_OFF);​
 +   ​digitalWrite(segF,​ SEGMENT_OFF);​
 +   ​digitalWrite(segG,​ SEGMENT_OFF);​
 +   ​break;​
 +   case 2:
 +   ​digitalWrite(segA,​ SEGMENT_ON);​
 +   ​digitalWrite(segB,​ SEGMENT_ON);​
 +   ​digitalWrite(segC,​ SEGMENT_OFF);​
 +   ​digitalWrite(segD,​ SEGMENT_ON);​
 +   ​digitalWrite(segE,​ SEGMENT_ON);​
 +   ​digitalWrite(segF,​ SEGMENT_OFF);​
 +   ​digitalWrite(segG,​ SEGMENT_ON);​
 +   ​break;​
 +   case 3:
 +   ​digitalWrite(segA,​ SEGMENT_ON);​
 +   ​digitalWrite(segB,​ SEGMENT_ON);​
 +   ​digitalWrite(segC,​ SEGMENT_ON);​
 +   ​digitalWrite(segD,​ SEGMENT_ON);​
 +   ​digitalWrite(segE,​ SEGMENT_OFF);​
 +   ​digitalWrite(segF,​ SEGMENT_OFF);​
 +   ​digitalWrite(segG,​ SEGMENT_ON);​
 +   ​break;​
 +   case 4:
 +   ​digitalWrite(segA,​ SEGMENT_OFF);​
 +   ​digitalWrite(segB,​ SEGMENT_ON);​
 +   ​digitalWrite(segC,​ SEGMENT_ON);​
 +   ​digitalWrite(segD,​ SEGMENT_OFF);​
 +   ​digitalWrite(segE,​ SEGMENT_OFF);​
 +   ​digitalWrite(segF,​ SEGMENT_ON);​
 +   ​digitalWrite(segG,​ SEGMENT_ON);​
 +   ​break;​
 +   case 5:
 +   ​digitalWrite(segA,​ SEGMENT_ON);​
 +   ​digitalWrite(segB,​ SEGMENT_OFF);​
 +   ​digitalWrite(segC,​ SEGMENT_ON);​
 +   ​digitalWrite(segD,​ SEGMENT_ON);​
 +   ​digitalWrite(segE,​ SEGMENT_OFF);​
 +   ​digitalWrite(segF,​ SEGMENT_ON);​
 +   ​digitalWrite(segG,​ SEGMENT_ON);​
 +   ​break;​
 +   case 6:
 +   ​digitalWrite(segA,​ SEGMENT_ON);​
 +   ​digitalWrite(segB,​ SEGMENT_OFF);​
 +   ​digitalWrite(segC,​ SEGMENT_ON);​
 +   ​digitalWrite(segD,​ SEGMENT_ON);​
 +   ​digitalWrite(segE,​ SEGMENT_ON);​
 +   ​digitalWrite(segF,​ SEGMENT_ON);​
 +   ​digitalWrite(segG,​ SEGMENT_ON);​
 +   ​break;​
 +   case 7:
 +   ​digitalWrite(segA,​ SEGMENT_ON);​
 +   ​digitalWrite(segB,​ SEGMENT_ON);​
 +   ​digitalWrite(segC,​ SEGMENT_ON);​
 +   ​digitalWrite(segD,​ SEGMENT_OFF);​
 +   ​digitalWrite(segE,​ SEGMENT_OFF);​
 +   ​digitalWrite(segF,​ SEGMENT_OFF);​
 +   ​digitalWrite(segG,​ SEGMENT_OFF);​
 +   ​break;​
 +   case 8:
 +   ​digitalWrite(segA,​ SEGMENT_ON);​
 +   ​digitalWrite(segB,​ SEGMENT_ON);​
 +   ​digitalWrite(segC,​ SEGMENT_ON);​
 +   ​digitalWrite(segD,​ SEGMENT_ON);​
 +   ​digitalWrite(segE,​ SEGMENT_ON);​
 +   ​digitalWrite(segF,​ SEGMENT_ON);​
 +   ​digitalWrite(segG,​ SEGMENT_ON);​
 +   ​break;​
 +   case 9:
 +   ​digitalWrite(segA,​ SEGMENT_ON);​
 +   ​digitalWrite(segB,​ SEGMENT_ON);​
 +   ​digitalWrite(segC,​ SEGMENT_ON);​
 +   ​digitalWrite(segD,​ SEGMENT_ON);​
 +   ​digitalWrite(segE,​ SEGMENT_OFF);​
 +   ​digitalWrite(segF,​ SEGMENT_ON);​
 +   ​digitalWrite(segG,​ SEGMENT_ON);​
 +   ​break;​
 +   case 10:
 +   ​digitalWrite(segA,​ SEGMENT_OFF);​
 +   ​digitalWrite(segB,​ SEGMENT_OFF);​
 +   ​digitalWrite(segC,​ SEGMENT_OFF);​
 +   ​digitalWrite(segD,​ SEGMENT_OFF);​
 +   ​digitalWrite(segE,​ SEGMENT_OFF);​
 +   ​digitalWrite(segF,​ SEGMENT_OFF);​
 +   ​digitalWrite(segG,​ SEGMENT_OFF);​
 +   ​break;​
 +  }
 +}
 +
 +</​code>​
  
 {{:​pm:​prj2022:​arosca:​aplicatie-cod-dinu.png?​300|}} {{:​pm:​prj2022:​arosca:​aplicatie-cod-dinu.png?​300|}}
pm/prj2022/arosca/senzorgaze.1653849409.txt.gz · Last modified: 2022/05/29 21:36 by dumitru_razvan.dinu
CC Attribution-Share Alike 3.0 Unported
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