| Per començar | Elements d'entrada | Programació CircuitPython | Recursos CITCEA | |
| Elements no electrònics | Elements de sortida | Programació Arduino | ||
| Projectes | Elements de control | Dades pràctiques | Inici |
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:
2 Tanques per cosir o una tira de velcro conductor
2 Resistències de 10 kΩ
1 Resistència de 100 Ω
La figura següent mostra l'esquema del circuit:

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

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.

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.