& lt; code class = & quot; cpp & quot; & gt; // Lieb Especial, lo que reduce la latencia cuando se usa digitalRead \ digitalWrite. # include & lt; digitalWriteFast.h & gt; int LED = 7; // Ping, que es indicador LED conectado int mov = 5; // Ping, donde se conecta el sensor de movimiento int tra = 9; // Ping, que es la puerta comunicada de la int FET arriba = 12; // Pin, donde Pin Un int abajo = 11; // Pin donde Pin B int swi = 10; // Pin, donde Pin C int swi1 = 6; // Pin, donde Pin D Cadena btn; int tmp; int mv; int temporizador, inttimer; // Variable de temporizador int ancho = 255; // Brillo LED defecto int act = 255; // Servicio variable de brillo int hidráulico paso a paso = 5; // ¿Cuánto hay que cambiar el brillo int movió; // Trabajo Síntoma después de ir fuera int = 3600; // Tiempo de espera después del cual la luz se apaga int svet = 60; // ¿Cuántos encender las luces al conducir de noche void setup () {pinMode (led, OUTPUT); pinMode (tra, OUTPUT); pinMode (13, OUTPUT); pinMode (mov, INPUT); pinMode (arriba, INPUT); pinMode (abajo, INPUT); pinMode (SWI, INPUT); temporizador = 0; Serial.begin (9600); analogWrite (tra, 255); } Lazo vacío () {// Aumentamos temporizadores temporizador ++; inttimer ++; int sensorValue = analogRead (A0); // Leer el brillo de la luz mv = mv + digitalReadFast (MOV); si (== mv 7) {mv = 0;} // contar cuántos movimientos, y se restablece si les gusta 7 btn = buttonPressed (); // Leer el que se pulsa el botón en la // remoto Si se pulsa el botón, la formación de la acción si (btn = & quot;! & Quot;) {if (br & gt; 10) {hidráulico paso a paso = 10;} // Si el valor actual es mayor que 10 luego de la subasta establecido en 10. Esto hace que para un cambio más notable en el brillo si (btn == & quot; a & quot;) {br = br + hidráulico paso a paso;} if (btn == & quot; b & quot;) {br = br-hidráulico paso a paso;} si (btn == & quot; c & quot;) {// Si al pulsar la tecla Opción de tiempo de espera, entonces, si (a == 7200) {a = 3,600; parpadeo (8, 50); retardo (1000);} else // Si la corriente de tiempo de espera durante dos horas, a continuación, restablece durante una hora, y blimkaem 8 veces si (a cabo == 1800) {OUT = 7,200; abrir y cerrar (0, 2000); retardo (1000);} else // Si el tiempo de espera de corriente durante media hora, a continuación, poner en dos y uno blimkaem mucho tiempo si (a == 3600) {a = 1,800; parpadeo (50, 15); retardo (1000);} // Si la hora de tiempo de espera actual, a continuación, poner en la media hora y la luz parpadeante} if (br & lt ; 0) {br = 255;} // Si el umbral de luminosidad demasiado baja, entonces se ajusta al máximo (encender la luz) si (br & gt; 255) {br = 0;} // Si se supera el umbral de luminosidad, restablezca a 0 (desactivar la luz ) act = br; analogWrite (tra, ancho); // Establecer la tensión en la salida del PWM de Arduino, y en consecuencia la puerta tranzictora // Cambiar las variables después de presionar cada botón del temporizador = 0; inttimer = 0; movido = 0; retardo (250); } // Si había un movimiento es detectado, el conteo comienza de nuevo si (digitalReadFast (mov) == 1) {temporizador = 0; digitalWriteFast (13, HIGH); } Else {digitalWriteFast (13, LOW); } If ((br & gt; 240) y (inttimer == 1800)) {br = 180; cur = 180; analogWrite (tra, act);} // Si ha pasado media hora, y el brillo de la lámpara es alta, restablezca un poco // Para lograr un determinado temporizador extinguir gradualmente la luz, sino para recuperar, si en este momento para detectar el movimiento si (timer == fuera) {for (int i = br; i & gt; = 0; i--) {analogWrite (tra, i); br = 0; si (digitalReadFast (mov) == 1) {temporizador = 0; br = act; analogWrite (tra, act); break; } Delay (100); }} // Si la luz nocturna carga temporizador y fuera de la luz si ((timer == svet) y (== movido 1)) {br = 0; movido = 0; mv = 0; act = 0; analogWrite (tra, ancho); } // Si no hubiera movimiento y brillo de la lámpara - un cero, a continuación, encienda la luz en el Pyaterochka y restablezca el temporizador si ((mv & gt; 5) y (br == 0) y (sensorValue & gt; 1020)) {br = 5; act = 5; temporizador = 0; movido = 1; mv = 0; analogWrite (tra, ancho); }} Parpadeo Void (int cuenta, int del) {for (int i = 0; i & lt; = cuenta; i ++) {// establece el valor (rango de 0 a 255): retraso (del); digitalWriteFast (LED, HIGH); retraso (del); digitalWriteFast (dirigido, LOW); }} Cadena buttonPressed () // función para determinar la muleta de prensado en el teclado + pausa {btn = & quot; & quot ;; for (int i = 0; i & lt; = 1,000; i ++) {if (digitalReadFast (abajo) == 1) {btn = & quot; b & quot ;;} if (digitalReadFast (hasta) == 1) {btn = & quot; a & quot ;;} if (digitalReadFast (SWI) == 1) {btn = & quot; c & quot ;;} if (digitalReadFast (swi1) == 1) {btn = & quot; d & quot ;;} if (btn = & quot;! & quot ;) {parpadeo (0, 20); break;} retardo (1); } Btn Retorno; } & Lt; / Código & gt; pre>
Un flujo de trabajo poco: h5>
Una pequeña demostración de vídeo: h5>
poco decepcionante: h5> - El diseño, que fue filmada en video - es inutilizable. Dos de 20 vatios LED caliente radiador raskochegarilsya luz hasta tal punto que el estaño fundido, que a ellos se soldaron cables. Sustituido dos de 20 vatios caliente, cuatro de 10 vatios neutral e introdujo una muleta por el brillo.
- LED blanco neutro - repugnantes y desagradables a la vista
.
- No puedo pensar en emulación de sujeción teclas en un teclado de computadora. Debido a esto, la luz cambia a borbotones, porque demora - fijos.
- Control remoto periódicamente proglyuchivaet, a saber, no atrapado por el receptor, por lo tanto, cuando se tiene indicador de encendido del mando a distancia - no es una garantía de la entrega de la señal. Para ello fue necesario introducir un indicador sobre la araña
- Radiador masivo para dos LED de 20 vatios - no era suficiente, o están trabajando en modo extremo. Mañana mido las corrientes y trato de poner una resistencia.
- Luz de cortesía - mierda completa, ya que muestra todos los mocos en los cables. Tengo la intención de pedir el acrílico mate, y hacer que la luz blanca difusa.
- ¿No ha encontrado el KREN5A (increíble pero cierto) del mercado, debido a esto, para Arduin tuvo que poner extra. fuente de alimentación, pero quería darle de comer al conductor.
- Snot - no es bueno, Arduino también. Cuota grabado para atmegi, llegado programador - deshacerse del exceso de mucosidad
.
Gracias por leer hasta el final. H4> ¿Está usted interesado en el hecho de que he publicado otro artículo con una araña de mejora?
| sí |
| no Votado 242 personas. 40 personas se abstuvieron. Sólo los usuarios registrados pueden votar en las encuestas. sesión , por favor. Fuente: habrahabr.ru/post/247151/
Las mejores imágenes del telescopio "Hubble" (Segunda parte)
IBM está trabajando con Nvidia para crear una nueva generación de supercomputadoras
|