| 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 |
Pylux és un pijama que quan l'usuari s'aixeca encén uns llums que porta incorporats sempre que no hi hagi prou llum ambient. També incorpora un sistema per despertar a l'usuari quan porta dormint un temps predeterminat.
La llista de materials principals és la següent:
9 NeoPixel
1 Sensor d'acceleració i camp magnètic
2 Resistència de 100 Ω
1 Polsador
1 Resistència de 10 kΩ
La següent figura mostra la distribució dels elements a la samarreta del pijama.

La figura següent mostra l'esquema de connexions.

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

A continuació tenim el llistat del programa:
#include <Adafruit_NeoPixel.h> #include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_LSM303.h> #define fcon 10000 #define hora 1 #define inputPin 1
//Coses del sensor d'acceleracio Adafruit_LSM303 lsm; //Coses LED Adafruit_NeoPixel cadena = Adafruit_NeoPixel(9, 10, NEO_GRB + NEO_KHZ800); unsigned long temps = 0; // temps unsigned long incrt = hora*fcon; //son 8 hores int pulsador = 0; unsigned long tactu = 0; boolean despertador = false; int sensorPin = A9; int lightValue = 0; int llum = 0;
void setup() {
Serial.begin(9600);
// Try to initialise and warn if we couldn't detect the chip
if (!lsm.begin()){
Serial.println("Oops ... unable to initialize the LSM303. Check your wiring!");
while (1);
}
Serial.begin(9600);
Serial.println("Setup");
//LED
cadena.begin(); // Inicialitza els NeoPixels
delay(250);
cadena.setPixelColor(0, 0, 0, 0);
cadena.setPixelColor(1, 0, 0, 0);
cadena.setPixelColor(2, 0, 0, 0);
cadena.setPixelColor(3, 0, 0, 0);
cadena.setPixelColor(4, 0, 0, 0);
cadena.setPixelColor(5, 0, 0, 0);
cadena.setPixelColor(6, 0, 0, 0);
cadena.setPixelColor(7, 0, 0, 0);
cadena.setPixelColor(8, 0, 0, 0);
cadena.show(); // Actualitza
Serial.println("Reseteja llums");
pinMode(inputPin, OUTPUT);
}
//Sensor Llum
llum = analogRead(sensorPin);
//Sistema despertador
pulsador = digitalRead(inputPin);
Serial.print("Light value is:");
Serial.println(lightValue);
if (pulsador == HIGH){
//encendre LEDs per avisar de que s'ha ences el despertador
Serial.println("Pulsador");
cadena.setPixelColor(0, 127, 255, 0); // Pixel 8 (No se quin és el color)
cadena.show(); // Actualitza
temps = millis();
despertador = true;
}
tactu = millis()-temps;
if ((tactu > incrt) && despertador){
Serial.println("Beep");
//activem brunzidor Esquerra
tone(6, 440, 250); // La durant 0,25 s
delay(500); // Espera mig segon
tone(6, 262); // Do
delay(250); // Durada 0,25 s
noTone(6); // Silenci
delay(2000); // Espera dos
tone(6, 440, 250); // La durant 0,25 s
delay(500); // Espera mig segon
tone(6, 262); // Do
delay(250); // Durada 0,25 s
noTone(6); // Silenci
delay(2000); // Espera dos segons
//Activem Brunzidor Dreta
tone(0, 440, 250); // La durant 0,25 s
delay(500); // Espera mig segon
tone(0, 262); // Do
delay(250); // Durada 0,25 s
noTone(0); // Silenci
delay(2000); // Espera dos segons
tone(0, 440, 250); // La durant 0,25 s
delay(500); // Espera mig segon
tone(0, 262); // Do
delay(250); // Durada 0,25 s
noTone(0); // Silenci
delay(2000); // Espera dos segons
despertador = false;
}
//Sensor d'acceleracio
//Sistema per encendre els llums
lsm.read();
Serial.print("Y: "); Serial.println((int)lsm.accelData.y); Serial.print(" ");
delay(1000);
if (((int)lsm.accelData.y > 15000) && llum < 12){
Serial.println("Encendre Llum");
//Hem de mirar la acceleracio en el eix y sigui semblant a la gravetat
//Encendre LED
//LED de color blanc
cadena.setPixelColor(0, 150, 150, 150); // Pixel 0 Blanc
cadena.setPixelColor(1, 150, 150, 150); // Pixel 1 Blanc
cadena.setPixelColor(2, 150, 150, 150); // Pixel 2 Blanc
cadena.setPixelColor(3, 150, 150, 150); // Pixel 3 Blanc
cadena.setPixelColor(4, 150, 150, 150); // Pixel 4 Blanc
cadena.setPixelColor(5, 150, 150, 150); // Pixel 5 Blanc
cadena.setPixelColor(6, 150, 150, 150); // Pixel 6 Blanc
cadena.setPixelColor(7, 255, 255, 255); // Pixel 7 Blanc
cadena.setPixelColor(8, 255, 255, 255); // Pixel 8 Blanc
cadena.show(); // Actualitza
delay(1000); // Espera un segon
} else {
cadena.setPixelColor(0, 0, 0, 0);
cadena.setPixelColor(1, 0, 0, 0);
cadena.setPixelColor(2, 0, 0, 0);
cadena.setPixelColor(3, 0, 0, 0);
cadena.setPixelColor(4, 0, 0, 0);
cadena.setPixelColor(5, 0, 0, 0);
cadena.setPixelColor(6, 0, 0, 0);
cadena.setPixelColor(7, 0, 0, 0);
cadena.setPixelColor(8, 0, 0, 0);
cadena.show(); // Actualitza
delay(1000); // Espera un segon
Serial.println("Apaga llum");
}
}
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.