Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* CODI LLIURE */
- /* Es mostra per pantalla la distancia a la que es troba l'objecte
- del sensor d'ultrasons.
- El boto "1" del comandament a distancia activara el LED;
- el "2" el zumbador; el "3" els dos al mateix temps;
- el d'apagar mantindra els dos elements sempre a nivell baix i el de
- reset posara tots els valors a 0.
- Cada vegada que el LED || el zumbador s'activen, el contador display
- suma 1. Cada 10 activacions, es mostra per pantalla la quantitat
- registrada. /*
- /* Crida a la llibreria Ultrasonic i Infrarojos */
- #include <Ultrasonic.h>
- #include <NECIRrcv.h>
- /* Creacio nou Ultrasonic */
- Ultrasonic ultrasons(4,7);
- /* Variables principals */
- #define PinIR A4
- #define LedPinIR A5
- #define LedPin 13
- #define zumb 12
- int dist = 0;
- int cont = 0;
- int acts = 0;
- int acum;
- /* Creacio nou Infrarojos */
- NECIRrcv ir(PinIR);
- /* Variables relacionades amb l'IR */
- #define led "f30cff00"
- #define zumbador "e718ff00"
- #define elsdos "a15eff00"
- #define apagar "ba45ff00"
- #define reset "f20dff00"
- /* Inicialitzacio del programa */
- void setup() {
- Serial.begin(9600);
- Serial.println("\t\t\t\tSoftware lliure!\n\n");
- Serial.print("Espere 5 segons...");
- pinMode(LedPin, OUTPUT);
- pinMode(LedPinIR, OUTPUT);
- pinMode(zumb, OUTPUT);
- ir.begin();
- display (1,1,1,1,1,1,0);
- pinMode(9, OUTPUT);
- pinMode(10, OUTPUT);
- pinMode(11, OUTPUT);
- pinMode(8, OUTPUT);
- pinMode(A0, OUTPUT);
- pinMode(A1, OUTPUT);
- pinMode(A2, OUTPUT);
- delay(5000);
- Serial.println("\t\tOK!\n\n\n");
- delay(250);
- }
- /* Crea la funcio del display de 7 segments */
- void display(int a, int b, int c, int d, int e, int f, int g){
- digitalWrite (A0,a);
- digitalWrite (8,b);
- digitalWrite (9,c);
- digitalWrite (10,d);
- digitalWrite (11,e);
- digitalWrite (A1,f);
- digitalWrite (A2,g);
- }
- void condicions(int n){
- switch(n){
- case 0: display (1,1,1,1,1,1,0); break;
- case 1: display (0,1,1,0,0,0,0); break;
- case 2: display (1,1,0,1,1,0,1); break;
- case 3: display (1,1,1,1,0,0,1); break;
- case 4: display (0,1,1,0,0,1,1); break;
- case 5: display (1,0,1,1,0,1,1); break;
- case 6: display (1,0,1,1,1,1,1); break;
- case 7: display (1,1,1,0,0,0,0); break;
- case 8: display (1,1,1,1,1,1,1); break;
- case 9: display (1,1,1,0,0,1,1); break;
- }
- }
- void mled(){
- if(dist<=40){
- digitalWrite(LedPin, HIGH);
- cont++;
- condicions(cont);
- }
- else
- digitalWrite(LedPin, LOW);
- }
- void mzumbador(){
- if(dist<=40){
- digitalWrite(zumb, HIGH);
- cont++;
- condicions(cont);
- }
- else
- digitalWrite(zumb, LOW);
- }
- void melsdos(){
- if(dist<=40){
- digitalWrite(LedPin, HIGH);
- digitalWrite(zumb, HIGH);
- cont++;
- condicions(cont);
- }
- else{
- digitalWrite(LedPin, LOW);
- digitalWrite(zumb, LOW);
- }
- }
- void mapagar(){
- digitalWrite(LedPin, LOW);
- digitalWrite(zumb, LOW);
- }
- void mreset(){
- condicions(0);
- acts = 0;
- }
- /* Bucle del programa. Estructura principal */
- void loop() {
- dist = ultrasons.Ranging(CM);
- Serial.print("Distancia: ");
- if(dist<10) Serial.print(" ");
- Serial.print(dist);
- Serial.print(" cm");
- Serial.print("\t\tNombre d'activacions: ");
- Serial.println(acts);
- unsigned long ircode;
- String hexIR;
- if(ir.available()){
- analogWrite(LedPinIR, 255);
- ircode = ir.read();
- hexIR = String(ircode, HEX);
- if(hexIR==led) acum = 1;
- else if(hexIR==zumbador) acum = 2;
- else if(hexIR==elsdos) acum = 3;
- else if(hexIR==apagar) acum = 4;
- else if(hexIR==reset){
- acum = 5;
- digitalWrite(LedPin, HIGH);
- delay(200);
- digitalWrite(LedPin, LOW);
- delay(200);
- digitalWrite(LedPin, HIGH);
- delay(200);
- digitalWrite(LedPin, LOW);
- }
- }
- if(acum==1) mled();
- else if(acum==2) mzumbador();
- else if(acum==3) melsdos();
- else if(acum==4) mapagar();
- else if(acum==5) mreset();
- analogWrite(LedPinIR, 0);
- if(cont>=10){
- condicions(0);
- cont = 0;
- acts += 10;
- }
- delay(250);
- }
- /* Fi del programa */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement