| 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 |
Es tracta d'una bufanda que, mitjançant uns LED NeoPixel indica a l'usuari la temperatura ambient i l'índex de radiació ultraviolada. Per reduir el consum d'energia, hi ha un polsador per encendre els LED corresponents a la temperatura i un altre per als de l'UVI. Els LED s'apaguen automàticament quan ha passat un temps des que han estat encesos.
La llista de materials principals és la següent:
1 Placa Circuit Playground Express
1 Sensor d'índex de radiació ultraviolada
1 NeoPixel strip de 144 LED per metre (tros de 58 LED)
La fotografia següent mostra el resultat final.

A continuació tenim el llistat del programa:
#include <Adafruit_CircuitPlayground.h> #include "Adafruit_SI1145.h" // Sensor UV #include <Adafruit_NeoPixel.h> // NeoPixels
int var=0; int cont=0; int contuv=0; int contp=0; int contv=0; int varub=0; int ajust=4; Adafruit_NeoPixel cadena = Adafruit_NeoPixel(60, A1, NEO_GRB + NEO_KHZ800); Adafruit_SI1145 uv = Adafruit_SI1145();
void setup() {
CircuitPlayground.begin();
Serial.begin(9600);
if (! uv.begin()) {
Serial.println("Comprova que el sensor està connectat");
while (1);
}
Serial.println("Sensor connectat");
cadena.begin(); // Inicialitza els NeoPixels
}
void loop(){
float L;
L=analogRead(A9);
float U0;
U0=3.3;
float T0;
T0=298.15;
float R0;
R0=10000;
float B;
B=3950;
Serial.print("Average analog reading ");
Serial.println(L);
float U,R,invT,T;
U=L*U0/1023;
Serial.println(U);
R=((R0*U0)/U)-R0;
Serial.println(R);
invT=((1/T0)+(1/B)*log(R/R0));
Serial.println(invT*10000000);
T=1/(invT)-273.15-ajust;
Serial.print("Temperature ");
Serial.println(T);
Serial.println(" *C");
Serial.println();
Serial.print("Llum visible: ");
Serial.println(uv.readVisible());
Serial.print("Radiacio IR: ");
Serial.println(uv.readIR());
Serial.print("Index UV: ");
Serial.println(uv.readUV()/100);
int UV;
UV=uv.readUV()/100;
int r;
r=CircuitPlayground.rightButton();
Serial.print(r);
if (r==1) {
contuv=contuv+1;
Serial.print(contuv);
}
if (contuv%2==0){
contv=0;
for (int i=0;i<=29;i++){
cadena.setPixelColor(i, 0, 0, 0);
}
cadena.show();
} else if (contuv%2!=0){
if (UV==0){
cadena.setPixelColor(0, 0, 100, 0);
cadena.setPixelColor(1, 0, 100, 0);
cadena.setPixelColor(26,0,100,0);
cadena.show();
} else if (UV==1){
cadena.setPixelColor(2, 0, 100, 0);
cadena.setPixelColor(3, 0, 100, 0);
cadena.setPixelColor(26,0,100,0);
cadena.show();
} else if (UV==2){
cadena.setPixelColor(4, 0, 100, 0);
cadena.setPixelColor(5, 0, 100, 0);
cadena.setPixelColor(26,0,100,0);
cadena.show();
} else if (UV==3){
cadena.setPixelColor(6, 100, 100, 0);
cadena.setPixelColor(7, 100, 100, 0);
cadena.setPixelColor(27,100,25,0);
cadena.show();
} else if (UV==4){
cadena.setPixelColor(8, 100, 100, 0);
cadena.setPixelColor(9, 100, 100, 0);
cadena.setPixelColor(27,100,25,0);
cadena.show();
} else if (UV==5){
cadena.setPixelColor(10, 100, 100, 0);
cadena.setPixelColor(11, 100, 100, 0);
cadena.setPixelColor(27,100,25,0);
cadena.show();
} else if (UV==6){
cadena.setPixelColor(12, 100, 25, 0);
cadena.setPixelColor(13, 100, 25, 0);
cadena.setPixelColor(27,100,25,0);
cadena.show();
} else if (UV==7){
cadena.setPixelColor(14, 100, 25, 0);
cadena.setPixelColor(15, 100, 25, 0);
cadena.setPixelColor(27,100,25,0);
cadena.show();
} else if (UV==8){
cadena.setPixelColor(16, 100, 0, 0);
cadena.setPixelColor(17, 100, 0, 0);
cadena.setPixelColor(28,100,0,0);
cadena.show();
} else if (UV==9){
cadena.setPixelColor(18, 100, 0, 0);
cadena.setPixelColor(19, 100, 0, 0);
cadena.setPixelColor(28,100,0,0);
cadena.show();
} else if (UV==10){
cadena.setPixelColor(20, 100, 0, 0);
cadena.setPixelColor(21, 100, 0, 0);
cadena.setPixelColor(28,100,0,0);
cadena.show();
} else{
cadena.setPixelColor(22, 100, 1, 25); // Pixel 0 vermell
cadena.setPixelColor(23, 100, 1, 25); // Pixel 1 verd
cadena.setPixelColor(28,100,0,0);
cadena.show();
}
if (UV!=varub){
for (int i=0;i<=29;i++){
cadena.setPixelColor(i, 0, 0, 0);
}
cadena.show();
}
varub=UV;
}
float Led;
Led=(-1.00/2.00)*T+53.00;
int leds = (float)Led;
Serial.println(leds);
int p;
p=CircuitPlayground.leftButton();
if (p==1) {
cont=cont+1;
Serial.print(cont);
}
if (cont%2==0){
contp=0;
for (int i=59;i>=30;i--){
cadena.setPixelColor(i, 0, 0, 0);
}
cadena.show();
} else if (cont%2!=0){
for (int i=58;i>=(leds+1);i--){
if (i>=53){
cadena.setPixelColor(i, 0, 0, 100);
} else{
cadena.setPixelColor(i, 100, 0, 0);
}
cadena.show();
}
if (var>leds){
cadena.setPixelColor(var,0,0,0);
}
}
var=leds;
delay(500);
contp=contp+1;
contv=contv+1;
if (contv==240){
contuv=0;
for (int i=0;i<=29;i++){
cadena.setPixelColor(i, 0, 0, 0);
}
cadena.show();
}
if (contp==240){
cont=0;
for (int i=30;i<=58;i++){
cadena.setPixelColor(i, 0, 0, 0);
}
cadena.show();
}
Serial.println(contp);
}
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.