Paso 3: Programe su Chip independiente
La razón por la que se pretende quitar el chip de la placa arduino es porque cuando comienza la programación TX/RX, Resetea el chip de arduino. Este reset desynchronizes el chip independiente de la Junta de programación, que luego causa una falla en el upload. El trabajo es simple.
Programación de un Chip independiente
1) conectar el chip independiente, según el último paso.
2) Conecte un capacitor de 20uF entre el pin RESET y GND de la placa Arduino. Asegúrese de que la pata positiva del capacitor está conectada al pin de RESET y la pata negativa está conectada a un conector de tierra. Este paso evita que el arduino de reajuste durante el proceso de carga.
3) hacen que LilyPad arduino con atmega 168 es seleccionado en herramientas > Junta. Hacer que Arduino como ISP es seleccionado en herramientas > Programador.
4) copiar y pegar el código de arduino en el IDE de Arduino
5) haga clic en archivo > cargar mediante programador.
6) cruzar los dedos y rezarle a la protoboard dioses que no tienen un cable suelto.
7) danza con júbilo porque ahora tienes un chip atmega de independiente programado para hacer lo que quiera.
Utilicé el ejemplo capsense encontrado en las bibliotecas de arduino y modificado para responder a múltiples toques. Incluí se desvanecen, porque no me gusta los cambios de brillo repentino (y sólo se ve mucho más frío)
El código de//Just copia y pega.
byte LEDPin = 11; Pin de salida de PWM para LED
byte capSensePin = 2; PIN para conectar al sensor capacitivo
modo de byte = 0; Determina el brillo del LED. 0 es. Varía entre 0 y 255.
byte touchThreshold = 100; Valor mínimo táctil capacitiva para activar modo siguiente
byte targetBrightness = 0; Conjunto poder en brillo
byte currentBrightness = 0; variable para comparar el brillo
void setup() {}
Serial.Begin(9600);
pinMode (LEDPin, salida); Establece LEDPin en modo salida
}
void loop() {}
Si (readCapacitivePin(capSensePin) > touchThreshold) {//If el valor de capSensePin superior a touchThreshold entonces hacer...
Delay(250);
Botón Debounce. ¿Cómo sería eliminar esta rotura usando millis()??
modo ++; Si se supera el umbral anterior, entonces aumentar el valor de modo 1
Esta sección siguiente describe los diferentes niveles de brillo de LED. 255 es la uno. 128 es la mitad de brillo.
Si el modo (modo > 3) = 0; Si el valor de modo es > 3 entonces ajuste de modo a 0.
Si (modo == 0) targetBrightness = 0;
Si (modo == 1) targetBrightness = 255;
Si (modo == 2) targetBrightness = 128;
Si (modo == 3) targetBrightness = 64;
Serial.Print ("el modo actual es..."); Aumenta el serial monitor a modo de bebug
Serial.println(Mode); Imprimir valor de modo monitor seial
}
Control de Fade
Si (targetBrightness > currentBrightness) currentBrightness ++;
Si (targetBrightness < currentBrightness) currentBrightness--;
analogWrite (LEDPin, currentBrightness);
Delay(3); se determina cómo rápidamente ocurre la transición.
Serial.println(currentBrightness);
ESTE PUNTO HACIA ADELANTE NO ESCRIBO.
Cada 500 ms, imprimir el valor del sensor capacitivo
Si ((millis() % 500) == 0) {}
Serial.Print ("Sensor capacitivo en el Pin 2 se lee:");
Serial.println(readCapacitivePin(capSensePin));
}
}
readCapacitivePin
Entrada: Número de pin Arduino
Salida: Un número de 0 a 17 expresan
Cuánta capacidad está en el pin
Al tocar el pin, o lo que tengas
Unido a él, el número se obtendrá mayor
En orden para que funcione ahora,
El pin debe tener un 1 + Megaohm resistencia tracción
up a + 5v.
uint8_t readCapacitivePin (int pinToMeasure) {}
Se trata de cómo se declara una variable que
llevará a cabo los registros del puerto, PIN y DDR
en un AVR
Puerto de uint8_t volátiles *;
uint8_t volátiles * ddr;
uint8_t volátiles * pin;
Aquí traducimos el número de pin de entrada de
Número de pin del Arduino al puerto de AVR, PIN, DDR,
y que poco de estos registros nos importa.
máscara de bits bytes;
Si ((pinToMeasure > = 0) & & (pinToMeasure < = 7)) {}
Puerto = & PORTD;
DDR = & DDRD;
máscara de bits = 1 << pinToMeasure;
PIN = & PIND;
}
Si ((pinToMeasure > 7) & & (pinToMeasure < = 13)) {}
Puerto = & PORTB;
DDR = & DDRB;
máscara de bits = 1 << (pinToMeasure - 8);
PIN = & PINB;
}
Si ((pinToMeasure > 13) & & (pinToMeasure < = 19)) {}
Puerto = & PORTC;
DDR = & DDR;
máscara de bits = 1 << (pinToMeasure - 13);
PIN = & PINC;
}
Descarga primero el pin poniendo baja y salida
* Puerto & = ~ (máscara);
* ddr | = máscara;
Delay(1);
Hacer el pin una entrada sin el pull-up interno en
* ddr & = ~ (máscara);
Ahora a ver cuánto tiempo el pin Haz tirado para arriba
ciclos de int = 16000;
para (int i = 0; i < ciclos; i ++) {}
Si (* pin & máscara) {}
ciclos = i;
rotura;
}
}
Descarga el perno otra vez poniendo baja y salida
Es importante dejar los pernos bajos si quiere
ser capaz de tocar más de 1 sensor a la vez-
el sensor quedo tirado alto, cuando te toque
dos sensores, su cuerpo transferirá la carga entre
sensores.
* Puerto & = ~ (máscara);
* ddr | = máscara;
volver a ciclos;
}