Ok, so I have my code nearly completed, first off I am using the capsense library from here:Arduino Playground - HomePage
In it's current state, the code can measure up to four triggers (from the touch sensor I am using). For the first 3, one led will light up, then the next, and so forth. Once it reaches the forth, I have a while loop to flash the first led while the counter is still at four triggers, however if I trigger it again, the loop continues, and does not go to the next while loop.
#include <CapacitiveSensor.h>
CapacitiveSensor cs_3_4 = CapacitiveSensor(3,4);
const int led1 = 0; // setting the pins used for LEDs (physical pins 6,7, and 8.
const int led2 = 1;
const int led3 = 2;
int counter = 0; // Counter for when the sensor is touched.
void setup()
{
cs_3_4.set_CS_AutocaL_Millis(0xFFFFFFFF);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
}
void loop()
{
long total1 = cs_3_4.capacitiveSensor(30);
if (total1 > 500) {
counter = counter +1; // Increasing the counter by one each time the sensor is touched.
delay(1000); // A delay so that if the sensor is held it does not increase the counter multiple times.
}
if (counter ==0) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
}
if (counter == 1) {
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
}
if (counter == 2) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
}
if (counter == 3) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
while (counter == 4) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(1000);
}
while (counter == 5) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
delay(1000);
}
while (counter >= 6) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
delay(1000);
}
}
I tried making a second while loop that looks for the sensor being triggered, and to change the counter thinking that might work, but for some reason it now flashes the first two LEDs, and doesn't change when I trigger it again.
// Capacitive sensor device using attiny 85v, made by Jesse Levesque (XOIIO).
#include <CapacitiveSensor.h>
CapacitiveSensor cs_3_4 = CapacitiveSensor(3,4);
const int led1 = 0; // setting the pins used for LEDs (physical pins 6,7, and 8.
const int led2 = 1;
const int led3 = 2;
int counter = 0; // Counter for when the sensor is touched.
void setup()
{
cs_3_4.set_CS_AutocaL_Millis(0xFFFFFFFF);
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
}
void loop()
{
long total1 = cs_3_4.capacitiveSensor(30);
if (total1 > 500) {
counter = counter +1; // Increasing the counter by one each time the sensor is touched.
delay(1000); // A delay so that if the sensor is held it does not increase the counter multiple times.
}
if (counter ==0) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
}
if (counter == 1) {
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
}
if (counter == 2) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
}
if (counter == 3) {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
while (counter == 4) {
if (total1 > 500) {
counter = counter +1;
delay(1000);
}
}
while (counter == 4) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(1000);
}
while (counter == 5) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
delay(1000);
}
while (counter >= 6) {
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(1000);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
delay(1000);
}
}
So, how to I set up these while loops properly?