Expositor con selector de época temporal que al accionarse muestra en una pantalla una narración historia protagonizada por alumnos de primaria.
Puede emplearse para cualquier propósito de exposición de vídeos, pues es muy versátil. Otro ejemplo que hemos puesto en práctica en el centro, es usarla para exponer resúmenes en vídeo narradas de 12 cuentos populares trabajados en el aula.
Materiales electrónicos
- 1 Arduino Nano 6€
- 1 Raspberry Pi 3 model B+ o superior 50€
- 2 servo-motores SG90
- 120 leds Ws2812b
- Tira led de 5V
- Encoder rotativo
- Pantalla 7 segmentos 6 dígitos controlada por TM1637. 1€
- Palanca accionadora 3€
- 1 buzzer activo
- 1 transistor NPN BD139
- HDMI en caso de no usar el BT
- 1 Televisor o monitor de ordenador.
- 1 Fuente alimentación 30W
- Entrada DC
- 1 BT opcional
Indicadores medidores analógicos
Se trata de dos piezas decorativas que recrean un medidor de aguja antiguo. Se moverán de forma aleatoria y espasmódica encendiendo la luz led interior al ser activada la palanca.




En el siguiente PDF se puede ver el procedimiento de ensamblaje de los indicadores de aguja.
En el paso nº2, de forma opcional, podemos poner con adhesivo rodeando el interior del cilindro la tira de leds de 5V, esto añadirá un efecto más vistoso. Estos leds estarán controlados por el transistor NPN que conectaremos al pin D6 del microcontrolador.
En esta parte usaremos un metacrilato de un espesor de 1mm que se muestra en la pieza nº4.
La flecha impresa en la pieza nº2 muestra la dirección para el servomotor y la muesca de encaje de la pieza nº6.


Dentro del complejo de 4 piezas acoplables debe colocarse un pequeño servomotor SG90.
Un servomotor o comúnmente llamado servo, es un motor DC con la capacidad de ubicar su eje en una posición o ángulo determinado, internamente tiene una caja reductora la cual le aumenta el torque y reduce la velocidad, un potenciómetro encargado de censar la posición del eje y una pequeña tarjeta electrónica que junto al potenciómetro forman un control de lazo cerrado.

Distinguir el cable de control es fundamental, en este caso es el naranja, que conectaremos los de un servo al pin D10 y el del otro servo en el pin D11 directamente del controlador.

Por último, mencionar que la distancia entre las piezas nº5 y nº6 es de 3mm, que es la del grosor de la tabla de madera que usaremos como consola de mando en nuestro caso.
Pieza portadora de los leds de selección.
En este caso presentamos la pieza que contendrá en su interior la tira de leds WS2812b, está dividida en 5 trozos para facilitar su impresión. Los leds irán adheridos de forma vertical para poder ser curvados sobre la pared interior de la guía. Hemos decidido imprimir estas piezas con PETG translúcido, aunque blanco opaco permite también la percepción de la iluminación.

Al principio este fue uno de los grandes temas de discusión para garantizar la correcta iluminación, la forma del embellecedor de los leds. Se tenían en cuenta ante todo el problema de la curvatura del recorrido de la tira. Se presentaros otros modelos como los que se muestran, pero nos acabamos decantando por el actual.



En la imagen siguiente podemos ver la disposición real de los surcos de los leds con sus medidas. En nuestro caso los imprimimos en mosaico para poder trasladarlos a la plancha de madera de 3mm que usamos de base-soporte.
La cinta LED RGB se basa en el chip controlador WS2812B de Neopixel con el cual podemos realizar proyectos de una manera simple y escalable ya que se tiene el control de cada pixel y de cada color, ya sea rojo, verde y azul a través de un solo cable. Además, tienen la ventaja de poder encadenarse unos tras otros (la salida de uno se puede conectar a la entrada de la siguiente) para obtener cadenas más largas además de formas interesantes gracias a su flexibilidad.

Usaremos 120 de estos leds en una tira de una densidad de 140 leds por metro lo que será algo menos de un metro.
En la programación se controlarán con la librería <Adafruit_NeoPixel.h> que podremos descargar en la sección más abajo. Emplearemos el pin D8 del microcontrolador para Din.
El consumo de cada led será de 60mA, por lo que necesitaremos una fuente algo poderosa para desempeñar sin problemas tal requerimiento además del consumo de la raspberry pi y los servo motores de las agujas.
Fuente de alimentación
La demanda de energía será alta, pues debemos alimentar con la misma fuente la Raspberry pi y la electrónica interna.
- 60mA x 120 leds (nunca se encenderán a la vez)
- 20mA x 12 leds fijos aprox.
- 2 servomotores
- Pantalla de 7 segmentos.
Por lo que nos decantamos por unos amplios 30W que suponen 6A a 5V.

Selector
Un Rotary Encoder es un dispositivo electro mecánico que convierte el movimiento de giro de un eje en una señal. Se parece mucho a un potenciómetro, pero a diferencia de este, puede girar indefinidamente tanto en sentido del reloj como al contrario.

Conectaremos los pines CLK al in D2 y DT al pin D3 para usar las interrupciones de Arduino con las que conseguiremos mayor precisión para este dispositivo.
El enconder posee además un pequeño pulsador que no usaremos en el proyecto y que tiene la salida SW, pues para la activación usaremos la palanca que es más vistosa, aunque en caso de no querer usar una palanca podrías emplear dicho pulsador.
En la programación usaremos la librería ESProtary.h que incluimos en la sección adecuada para descargar, pues mencionar que esta librería dispone de distintas versiones y me ha provocado muchos inconvenientes al no usar la adecuada.
Lo colocaremos entre las piezas que se muestran, usando para su fijación la tuerca adecuada. Nótense las pequeñas muescas en la pieza negra que permitirán la fijación adecuada impidiendo que gire sobre su propio eje.

Palanca de activación
La palanca que usamos en este proyecto permite la activación de 4 pulsadores, pues se trata de una de propósito general para videojuegos.
Con el diseño del embellecedor de la palanca bloqueamos cualquiera de los movimientos y obligamos a que sólo pueda funcionar el pulsador de «hacia abajo«

El pulsador se conectará a D9 con una resistencia en pull up de 4,7k ohm.
Pared lateral
Para poder imprimirla, la hemos cortado en 6 trozos con un software de corte.

Por el lado izquierdo tenemos los huecos para la alimentación y la salida de video por HDMI.
Embellecedor superior

Su misión es estática y nos ayudará a tapar el corte del cuero negro que cubre la tapa superior ocultando posibles imperfecciones.
Casillas de selección

Aquí se colocarán las pegatinas indicativas para seleccionar una época deseada. Se atornilla sobre la tapa con tornillos de 3mm.
Separadores de selección

De propósito estético también delimitarán la separación de las 12 propuestas, por lo que necesitaremos imprimir 13 iguales.
Visor led de año de destino
En un principio diseñado para mostrar el año de destino del viajero en el tiempo, se puede usar en otros proyectos mostrando el número de la selección.

Aquí usaremos el display de 6 dígitos controlados por un TM1637 que dispone de 4 pines para su manejo:
- Vcc para la tensión directamente de la fuente.
- Gnd a masa.
- DIO a D5.
- CLK a D4.

Usaremos la librería <TM1637TinyDisplay6.h> que nos facilitará el proceso de programación.

Que no se nos pase que en el mismo embellecedor colocaremos el buzzer de pc en un hueco destinado para ello que conectaremos al D12 y tierra.
Ensamblaje de partes

- La pieza nº1 será de unos 3mm de espesor y usaremos madera contrachapada. Estará sujeta a la pieza nº2 mediante tornillos de 5mm.
- La pieza nº2 será impresa en 6 piezas separadas.
- La pieza nº3 será contrachapado de 2 mm que una vez cortada respetando los orificios para los contadores analógicos, el selector rotativo, visor led y la palanca; forraremos de cuero negro. Encajará en la pieza nº2 sobre su muesca interior.
- Por último la pieza nº4, contiene todos los embellecedores irá atornillada a la pieza 3 con tornillos de 5mm y el resto de 3mm.
Esta plantilla ayudará a la hora de realizar el corte de las piezas en madera.
Interacción Arduino <-> Pi
Es un proyecto que podría realizarse tan solo con una Raspberry pi como controlador y reproductor de vídeos, pero en mi caso me siento mucho más cómodo programando en el IDE de Arduino y usando electrónica con voltaje de 5V. Así que emplearemos el Arduino como actuador de entrada y salida y la PI como simple reproductora de los vídeos (característica imposible para Arduino).
Para ello dividiremos la sección de programación en dos apartados para ver la de Arduino y luego la de la Pi.
Ambas placas se comunicarán entre sí mediante el puerto Serie creado en la conexión USB y será Arduino la que activará la reacción de la Raspberry Pi.

A tener en cuenta que la placa microcontroladora será alimentada además de enviar datos también por la corriente proporcionada por el USB.
Para cambiar los vídeos que se mostrarán y teniendo en cuenta que la Raspberry se encuentra dentro del aparato, no es posible acceder al puerto USB para traspasar los vídeos con un pendrive una vez cerrada la máquina, así que configuraremos el acceso por wifi, conectándonos al SO con Real VNC server. Sólo en caso de modificaciones, claro, este paso es opcional, pero aconsejable. Por lo que se recomienda configurar una IP fija.

Como para esta versión se decidió albergar la Pi en el interior de la máquina, debemos preparar un acceso al HDMI para la pantalla de televisión, usando un alargador. En caso de decidir dejar la Pi fuera del artefacto, habría que hacer uso del Bluetooth opcional para la comunicación entre Arduino y la Pi.
Para ello hemos dispuesto una pieza stl para imprimir que se encarga de sujetar el alargados HDMI a la parte exterior de un lateral.
Aspecto final pretendido




Esquema electrónico

Códigos
Código para el Arduino Nano
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 |
#include <Arduino.h> #include <TM1637TinyDisplay6.h> #include "ESPRotary.h"; #include <WS2812FX.h> #include <Adafruit_NeoPixel.h> #include <Servo.h> Servo myservo1; Servo myservo2; #define CLK 4 #define DIO 5 #define buzz 12 #define ROTARY_PIN1 2 #define ROTARY_PIN2 3 #define LED_PIN 8 #define servo1_pin 10 #define servo2_pin 11 #define led_5v 6 #define palanca_pin 9 #define n_leds 120 ESPRotary r = ESPRotary(ROTARY_PIN1, ROTARY_PIN2, 4); //el 4 es por la peculiaridad de mi encoder, que cuenta 2 pasadas en cada salto. TM1637TinyDisplay6 display(CLK, DIO); Adafruit_NeoPixel pixels(n_leds, LED_PIN, NEO_GRB + NEO_KHZ800); bool palanca; long actualidad = 2025; int led_actual = 0; long parada[] = { -99999, -10052, -5106, -2258, -1140, 107, 1025, 1492, 1843, 1951, 2054, 999999 }; long salida = -600; //año actual que servirá de año de salida. long llegada; long duracion = 100; //delay del viaje long viaje; long incremento; int etapa_actual = 11; unsigned long tiempo = 0; unsigned long retraso = 30000; void setup() { Serial.begin(9600); // Serial.println("Saludos, iniciando viaje en el tiempo"); pinMode(buzz, OUTPUT); pinMode(palanca_pin, INPUT); pinMode(led_5v, OUTPUT); r.setLeftRotationHandler(showDirection); r.setRightRotationHandler(showDirection); display.begin(); pixels.begin(); test(); display.showNumberDec(actualidad, (0x80 >> 2), false); pixels.clear(); pixels.show(); } void loop() { if ((millis() - tiempo) > retraso) { tiempo = millis(); pixels.clear(); pixels.show(); actualidad = 2025; etapa_actual = 11; salida = -600; display.showNumberDec(actualidad, (0x80 >> 2), false); } palanca = digitalRead(palanca_pin); if (palanca == false) { tiempo = millis(); muestra(); } r.loop(); } void test() { display.showNumberDec(888888, (0x80 >> 2), false); delay(100); for (int x = 0; x <= n_leds; x++) { pixels.setPixelColor(x, pixels.Color(255, 0, 0)); delay(2); pixels.show(); } for (int x = 0; x <= n_leds; x++) { pixels.setPixelColor(x, pixels.Color(0, 255, 0)); delay(2); pixels.show(); } for (int x = 0; x <= n_leds; x++) { pixels.setPixelColor(x, pixels.Color(0, 0, 255)); delay(2); pixels.show(); } for (int x = 0; x <= n_leds; x++) { pixels.setPixelColor(x, pixels.Color(0, 0, 0)); delay(2); pixels.show(); } digitalWrite(led_5v, HIGH); myservo1.attach(servo1_pin); for (int pos = 0; pos <= 180; pos += 5) { myservo1.write(pos); delay(15); } for (int pos = 180; pos >= 0; pos -= 5) { myservo1.write(pos); delay(15); } myservo1.detach(); myservo2.attach(servo2_pin); for (int pos = 0; pos <= 180; pos += 5) { myservo2.write(pos); delay(15); } for (int pos = 180; pos >= 0; pos -= 5) { myservo2.write(pos); delay(15); } myservo2.detach(); digitalWrite(led_5v, LOW); digitalWrite(buzz, HIGH); delay(300); digitalWrite(buzz, LOW); delay(100); } void muestra() { llegada = parada[etapa_actual - 1]; viaje = llegada - salida; incremento = viaje / duracion; if (viaje == 0) { //impide que se viaje al mismo sector desde el que se sale. return; } /* Serial.print("Partimos desde el año SALIDA "); Serial.println(salida); Serial.print("Llegaremos al año LLEGADA "); Serial.println(llegada); Serial.print("Etapa seleccionada "); Serial.println(etapa_actual - 1); Serial.print("El salto será de:"); Serial.println(viaje); Serial.print("incremento:"); Serial.println(incremento); Serial.print("Mando a la PI el video: "); // Enviar dato de la etapa por serial a la máquina Serial.println(etapa_actual); Serial.println("------------------"); */ if ((etapa_actual) <= 9) { Serial.print("0"); Serial.println(etapa_actual); } else { Serial.println(etapa_actual); } for (long b = 0; b <= 255; b = b + 5) { //leds de 5V ON analogWrite(led_5v, b); delay(20); } myservo1.attach(servo1_pin); myservo2.attach(servo2_pin); if (incremento >= 0) { if (incremento == 0) { incremento = 1; //Evita anomalia en inicio } for (long i = salida; i <= llegada; i = i + incremento) { digitalWrite(buzz, HIGH); delay(10); digitalWrite(buzz, LOW); myservo1.write(random(180)); myservo2.write(random(180)); delay(10); //ws2812fx.service(); if (i >= 999 || i <= -999) { display.showNumberDec(i, (0x80 >> 2), false); } else { display.showNumberDec(i, false); } } } else { for (long i = salida; i >= llegada; i = i + incremento) { digitalWrite(buzz, HIGH); delay(10); digitalWrite(buzz, LOW); myservo1.write(random(180)); myservo2.write(random(180)); delay(10); //ws2812fx.service(); if (i >= 999 || i <= -999) { display.showNumberDec(i, (0x80 >> 2), false); } else { display.showNumberDec(i, false); } } } if (llegada >= 999 || llegada <= -999) { display.showNumberDec(llegada, (0x80 >> 2), false); } else { display.showNumberDec(llegada, false); } pixels.clear(); pixels.show(); digitalWrite(buzz, HIGH); // Marcar el sector al que se llega. for (int a = (etapa_actual - 1) * 10; a <= ((etapa_actual - 1) * 10) + 9; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 0)); } pixels.show(); delay(80); digitalWrite(buzz, LOW); pixels.clear(); pixels.show(); delay(100); digitalWrite(buzz, HIGH); for (int a = (etapa_actual - 1) * 10; a <= ((etapa_actual - 1) * 10) + 9; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 0)); } pixels.show(); delay(300); digitalWrite(buzz, LOW); salida = llegada; //Resetea la salida a la epoca actual myservo1.detach(); myservo2.detach(); for (long b = 255; b >= 0; b = b - 5) { analogWrite(led_5v, b); delay(30); } } void showDirection(ESPRotary& r) { if (r.getDirection() == 1) { //255 a izquierda -- 1 a derecha. led_actual--; pixels.clear(); if (led_actual <= 0) { led_actual = 0; } } if (r.getDirection() == 255) { led_actual++; pixels.clear(); if (led_actual >= n_leds - 1) { led_actual = n_leds - 1; } } if (led_actual >= 0 && led_actual <= 9) { etapa_actual = 1; for (int a = 0; a <= 9; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } if (led_actual >= 10 && led_actual <= 19) { etapa_actual = 2; for (int a = 10; a <= 19; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } if (led_actual >= 20 && led_actual <= 29) { etapa_actual = 3; for (int a = 20; a <= 29; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } if (led_actual >= 30 && led_actual <= 39) { etapa_actual = 4; for (int a = 30; a <= 39; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } if (led_actual >= 40 && led_actual <= 49) { etapa_actual = 5; for (int a = 40; a <= 49; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } if (led_actual >= 50 && led_actual <= 59) { etapa_actual = 6; for (int a = 50; a <= 59; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } if (led_actual >= 60 && led_actual <= 69) { etapa_actual = 7; for (int a = 60; a <= 69; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } if (led_actual >= 70 && led_actual <= 79) { etapa_actual = 8; for (int a = 70; a <= 79; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } if (led_actual >= 80 && led_actual <= 89) { etapa_actual = 9; for (int a = 80; a <= 89; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } if (led_actual >= 90 && led_actual <= 99) { etapa_actual = 10; for (int a = 90; a <= 99; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } if (led_actual >= 100 && led_actual <= 109) { etapa_actual = 11; for (int a = 100; a <= 109; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } if (led_actual >= 110 && led_actual <= 119) { etapa_actual = 12; for (int a = 110; a <= 119; a++) { pixels.setPixelColor(a, pixels.Color(255, 255, 255)); } } digitalWrite(buzz, HIGH); delay(2); digitalWrite(buzz, LOW); pixels.setPixelColor(led_actual, pixels.Color(255, 0, 0)); pixels.show(); } |
Librerías
Un paquete zip con las librerías usadas en el proyecto para Arduino.
Código para la Raspberry pi
En esencia abre el puerto serie por el que se comunicará nuestra placa Arduino que será uno de los USB y se mantiene a la escucha, mientras muestra una imagen fija con las instrucciones 03.jpg.
Cuando recibe la cadena de texto responde visualizando el video correspondiente que guardaremos en la carpeta ‘Public’ nombrados desde 00 hasta 12.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
import serial from time import sleep import os os.system('clear') #os.system('xset s 10') os.system('xset s off') os.system('xset -dpms') os.system('xset s noblank') ser = serial.Serial('/dev/ttyUSB0',9600) #os.system ('sudo gpicview /home/pi/Downloads/03.jpeg &') os.system ('nomacs -f /home/pi/Downloads/03.jpeg &') os.system ('unclutter &') while True: read_serial=ser.readline() os.system('sudo pkill omx') #os.system('killall omxplayer') s=int (read_serial) print ("Detectada tarjeta") if s==1: print ("es la 01") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/01.mp4 &') sleep(2) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') if s==2: print ("es la 02") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/02.mp4 &') sleep(2) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') if s==3: print ("es la 03") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/03.mp4 &') sleep(2) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') if s==4: print ("es la 04") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/04.mp4 &') sleep(2) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') if s==5: print ("es la 05") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/05.mp4 &') sleep(2) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') if s==6: print ("es la 06") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/06.mp4 &') sleep(2) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') if s==7: print ("es la 07") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/07.mp4 &') sleep(2) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') if s==8: print ("es la 08") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/08.mp4 &') sleep(2) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') if s==9: print ("es la 09") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/09.mp4 &') sleep(2) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') if s==10: print ("es la 10") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/10.mp4 &') sleep(2) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') if s==99: print ("Bienvenida, artefacto operativo!") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/99.mp4 &') sleep(1) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') if s==98: print ("Desactivado.") #os.system('omxplayer --win 0,0,1280,720 //media/pi/GEMA/01.mp4 &') os.system('omxplayer -o local --win 0,0,1280,720 /home/pi/Public/Videos/98.mp4 &') sleep(1) os.system('sudo /sbin/sysctl vm.drop_caches=3') #os.system('clear') |
Proyecto construido










