Tecnologia vestible

Per començar Elements d'entrada Elements de control Programació   Recursos CITCEA
Projectes Elements de sortida Elements no electrònics Dades pràctiques   Inici

FundeX

FundeX és una funda per a ordinador portàtil que avisa de forma lluminosa i acústica quan l'obre alguna persona no autoritzada.

La funda porta un interruptor, situat en un lloc dissimulat, que permet activar o desactivar l'alarma. Si algú obre la funda quan l'alarma està activada s'encendran dos LED de color groc durant tres segons. Si un cop passats cinc segons l'alarma no ha estat desactivada, els LED es canviaran a color vermell i sonarà l'avís d'alarma.

La llista de materials principals és la següent:

1   Placa Flora

2   Neo Pixels

1   Interruptor

2   Botons de pressió o una tira de velcro conductor

2   Resistències de 10 kΩ

1   Brunzidor piezoelèctric

1   Resistència de 100 Ω

1   Portapiles amb piles

La figura següent mostra l'esquema del circuit:

esquema

El prototip va quedar com es mostra a la fotografia següent.

vista interior

A continuació tenim el llistat del programa:

#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel cadena = Adafruit_NeoPixel(2, 10, NEO_GRB + NEO_KHZ800);
uint32_t groc = cadena.Color(255, 255, 0);  // Defineix el color groc
int in = 6;
int lecturain;
int vel = 0;
int lecturavel;
int count = 0;
int contgroc = 0;
void setup() {                
	pinMode(in, INPUT); // El polsador és una entrada  
	pinMode(vel,INPUT);
	cadena.begin();  // Inicialitza els Neo Pixels        
	cadena.show();
   
}
void loop() {
	lecturain = digitalRead(in); // Llegim el polsador
	lecturavel = digitalRead(vel);
	if (lecturain == HIGH and lecturavel == LOW and count < 2){ // Si està premut...
		cadena.setPixelColor(0, 0, 255, 0);  
		cadena.setPixelColor(1, 0, 255, 0);  
		cadena.show(); 
		delay(1000); 
		cadena.setPixelColor(0, 0, 0, 0);  
		cadena.setPixelColor(1, 0, 0, 0);  
		count += 1;
		contgroc = 0;
	} else {	// Si no ho esta
		if ( lecturain == LOW and lecturavel == HIGH and contgroc >= 3){
			count = 0;
		}
		if ( lecturain == LOW and lecturavel == HIGH and contgroc < 3){
			count = 0;
			contgroc = 0;
		}
		if (lecturain == LOW and lecturavel == LOW and contgroc < 3){
			cadena.setPixelColor(0,255,151,0); 
			cadena.setPixelColor(1, 255, 151, 0);  
			cadena.show(); // Actualitza
			delay(1000);  // Espera un segon
			cadena.setPixelColor(0, 0, 0, 0);  
			cadena.setPixelColor(1, 0, 0, 0);   
			contgroc += 1;
			count = 0;
		}
		if (lecturain == LOW  and contgroc >= 3){
			cadena.setPixelColor(0,255,0,0); 
			cadena.setPixelColor(1, 255, 0, 0);  
			cadena.show(); // Actualitza
			count = 0;
			delay(1000);  
			tone(3, 440);  
			delay(400);  
			noTone(3);   
			delay(125); 
			tone(3, 440);  
			delay(400);  
			noTone(3);  
			delay(125); 
			tone(3, 440);  
			delay(400);  
			noTone(3);  
			delay(125);  
			tone(3, 349);  
			delay(200);  
			noTone(3);   
			delay(125);  
			tone(3, 523);  
			delay(100);  
			noTone(3);   
			delay(125); 
			tone(3, 440);  
			delay(400);  
			noTone(3);   
			delay(90);  
			noTone(3);  
			delay(125); 
			tone(3, 349); 
			delay(200);  
			noTone(3);   
			delay(125);  
			tone(3, 523); 
			delay(100);  
			noTone(3);   // Silenci
			delay(125);  
			tone(3, 440);   
			delay(600);  
			noTone(3);   
			delay(250);  
			tone(3, 584); 
			delay(400);  
			noTone(3);  
			delay(125);  
			tone(3, 584); 
			delay(400); 
			noTone(3);
			delay(125); 
			tone(3, 584);   
			delay(400);  
			noTone(3);   
			delay(125);  
			tone(3, 616);   
			delay(200);  
			noTone(3);   
			delay(125);  
			tone(3, 523);  
			delay(100);  
			noTone(3);   
			delay(125); 
			tone(3, 440);   
			delay(400);  
			noTone(3); 
			delay(90);  
			noTone(3); 
			delay(125);  
			tone(3, 349);  
			delay(200); 
			noTone(3);  
			delay(125); 
			tone(3, 523);   
			delay(100);  
			noTone(3);   
			delay(125);  
			tone(3, 440);  
			delay(600);  
			noTone(3);  
			delay(125);  
		}
		cadena.setPixelColor(0, 0, 0, 0);  
		cadena.setPixelColor(1, 0, 0, 0);  
	}
	cadena.show(); // Actualitza
	delay(1000);  // Espera un segon
}

 

 

 

En aquest web, les fotografies marcades amb [AF] són del web d'Adafruit, les marcades amb [SF] del web d'Sparkfun i les marcades amb [AU] del web d'Arduino.

 

 

 

 

 

 

 

 

 

 

Licencia de Creative Commons
This obra by Oriol Boix is licensed under a Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported License.