PseudoCode - nataliacatalan/Arduino-Project GitHub Wiki
Here we have written the first pseudocode idea:
int led1R
int led1G
int led1B
int led2R
int led2G
int led2B
int led3R
int led3G
int led3B
int sensor1
int sensor2
int sensor3
int startangel
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
if (swichmode == 1) {
if (startangel == 0) {
digitalWrite(led1R, LOW)
digitalWrite(led1G, LOW)
digitalWrite(led1B, LOW)
digitalWrite(led2R, LOW)
digitalWrite(led2G, LOW)
digitalWrite(led2B, LOW)
digitalWrite(led3R, LOW)
digitalWrite(led3G, LOW)
digitalWrite(led3B, LOW)
}
if (sensor2 < XXX millis(3000)) {
startangel = 1
analogRead(sensor1);
analogRead(sensor2);
analogRead(sensor3);
if (sensor2 > sensor1 && sensor 2 > sensor3) {
digitalWrite(led2G, HIGH)
}
else if (sensor2 < sensor1 $$ sensor 1 > sensor3) {
digitalWrite (led2B, HIGH)
digitalWrite (led1R, HIGH)
}
else if (sensor2 < sensor3 $$ sensor 3 > sensor1) {
digitalWrite (led2B, HIGH)
digitalWrite (led1R, HIGH)
}
}
if (sensor3 > sensor2 && sensor3 > sensor 1 millis(3000))
startangel = 0
}
}
Then, we have been evolving it until complete the first part. The working ratio of the presssure sensors is missing.
int led1R
int led1G
int led1B
int led2R
int led2G
int led2B
int led3R
int led3G
int led3B
int sensor1
int sensor2
int sensor3
int startangel
int valorS1;
int valorS1;
int valorS1;
int startmillis;
int lastmillis;
int startmillis2;
int lastmillis2;
int strarttres;
//*************************************************************************
///SETUP
void setup() {
pinMode(led1R, OUTPUT);
pinMode(led1G, OUTPUT);
pinMode(led1B, OUTPUT);
pinMode(led2R, OUTPUT);
pinMode(led2G, OUTPUT);
pinMode(led2B, OUTPUT);
pinMode(led3R, OUTPUT);
pinMode(led3G, OUTPUT);
pinMode(led3B, OUTPUT);
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
pinMode(sensor2, INPUT);
}
//*************************************************************************
///FUNCTIONS
void red1() {
digitalWrite(led1R, LOW);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, HIGH);
}
void green1() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, LOW);
digitalWrite(led1B, HIGH);
}
void blue1() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, LOW);
}
void red2() {
digitalWrite(led1R, LOW);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, HIGH);
}
void green2() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, LOW);
digitalWrite(led1B, HIGH);
}
void blue2() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, LOW);
}
void red3() {
digitalWrite(led1R, LOW);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, HIGH);
}
void green3() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, LOW);
digitalWrite(led1B, HIGH);
}
void blue3() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, LOW);
}
void off() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, HIGH);
digitalWrite(led2R, HIGH);
digitalWrite(led2G, HIGH);
digitalWrite(led2B, HIGH);
digitalWrite(led3R, HIGH);
digitalWrite(led3G, HIGH);
digitalWrite(led3B, HIGH);
}
//*************************************************************************
///LOOP
void loop() {
if (swichmode == 1) {
valorS1 = analogRead(sensor1);
valorS2 = analogRead(sensor2);
valorS3 = analogRead(sensor3);
if (valorS2 < XXX) {
startmillis = millis();
}
if (valoprS2 > XXX) {
lastmillis = millis() - startmillis;
}
if (valorS3 < YYY) {
startmillis2 = millis();
}
if (valoprS3 > YYY) {
lastmillis2 = millis() - startmillis2;
}
if (lastmillis < 3000) {
startangel = 0;
}
if (lastmillis >= 3000) {
if (startangel = 0) {
startangel = 1;
}
}
if (startangel == 1) {
if (valorS2 > valorS1 && valorS2 > valorS3) {
green2();
}
else if (valorS2 < valorS1 && valorS1 > valorS3) {
blue2();
red1();
}
else if (valorS2 < valorS3 && valorS3 > valorS1) {
blue2();
red3();
}
}
if (startangel == 0) {
off();
}
if (lastmillis2 >= 2000) {
startangel = 0;
}
Then we elaborate the secont part of the code:
//************************************************************************
//BUCLE
if (swichmode == 3) {
valorS1 = analogRead(sensor1);
valorS2 = analogRead(sensor2);
valorS3 = analogRead(sensor3);
if (valorS1 > XXX) { ////piques de punta
if (startjump = 0) {
startjump = 1;
}
}
if (valorS3 < YYY) {
startmillis2 = millis();
}
if (valoprS3 > YYY) {
lastmillis2 = millis() - startmillis2;
}
if (startjump == 1) {
if (valorS2 > valorS1 && valorS2 > valorS3) {
green2();
}
else if (valorS2 < valorS1 && valorS1 > valorS3) {
blue2();
red1();
}
else if (valorS2 < valorS3 && valorS3 > valorS1) {
blue2();
red3();
}
}
if (startjump == 0) {
off();
}
if (lastmillis2 >= 2000) {
startjump = 0;
}
} //swich
} //loop
The final code implementing the sensor pressure, we changed the digital reads into analog reads, and we create a map interval for controling the pressure of the sensors.
int led1R = 13; int led1G = 11; int led1B = 12; int led2R = 6; int led2G = 4; int led2B = 5; int led3R = 3; int led3G = 10; int led3B = 2; int sensor1 = A1; //he cambiado los botones de digital a analog int sensor2 = A2; int sensor3 = A3; int startangel; int startmillis; int lastmillis; int startmillis2; int lastmillis2; int strarttres; int val1; int val2; int val3;
//************************************************************************* ///SETUP
void setup() {
pinMode(led1R, OUTPUT); pinMode(led1G, OUTPUT); pinMode(led1B, OUTPUT); pinMode(led2R, OUTPUT); pinMode(led2G, OUTPUT); pinMode(led2B, OUTPUT); pinMode(led3R, OUTPUT); pinMode(led3G, OUTPUT); pinMode(led3B, OUTPUT); pinMode(sensor1, INPUT); pinMode(sensor2, INPUT); pinMode(sensor2, INPUT); Serial.begin (9600);
}
//************************************************************************* ///FUNCTIONS
void red1() { digitalWrite(led1R, LOW); digitalWrite(led1G, HIGH); digitalWrite(led1B, HIGH);
} void green1() { digitalWrite(led1R, HIGH); digitalWrite(led1G, LOW); digitalWrite(led1B, HIGH);
} void blue1() { digitalWrite(led1R, HIGH); digitalWrite(led1G, HIGH); digitalWrite(led1B, LOW);
} void red2() { digitalWrite(led2R, LOW); digitalWrite(led2G, HIGH); digitalWrite(led2B, HIGH);
} void green2() { digitalWrite(led2R, HIGH); digitalWrite(led2G, LOW); digitalWrite(led2B, HIGH);
} void blue2() { digitalWrite(led2R, HIGH); digitalWrite(led2G, HIGH); digitalWrite(led2B, LOW);
}
void red3() { digitalWrite(led3R, LOW); digitalWrite(led3G, HIGH); digitalWrite(led3B, HIGH);
} void green3() { digitalWrite(led3R, HIGH); digitalWrite(led3G, LOW); digitalWrite(led3B, HIGH);
} void blue3() { digitalWrite(led3R, HIGH); digitalWrite(led3G, HIGH); digitalWrite(led3B, LOW);
} void off() { digitalWrite(led1R, HIGH); digitalWrite(led1G, HIGH); digitalWrite(led1B, HIGH); digitalWrite(led2R, HIGH); digitalWrite(led2G, HIGH); digitalWrite(led2B, HIGH); digitalWrite(led3R, HIGH); digitalWrite(led3G, HIGH); digitalWrite(led3B, HIGH);
}
//************************************************************************* ///LOOP
void loop() {
int valorS1 = analogRead(sensor1); int valorS2 = analogRead(sensor2); int valorS3 = analogRead(sensor3); int pres1 = map (valorS1, -200, 450, 0, 500); //Al volverlo analog hemos substituido el valorS1 por pres1 int pres2 = map (valorS2, -200, 450, 0, 500); int pres3 = map (valorS3, -200, 450, 0, 500);
if (pres1 >150 && pres1<165){ pres1 = val1; } if (pres2 >150 && pres2<165){ pres2 = val2; } if (pres3 >150 && pres3<165){ pres3 = val3; } if(pres1==val1 && pres2==val2 && pres3==val3){ off(); } if (pres2 > pres1 && pres2 > pres3) { green2(); delay(1000); }
if (pres2 < pres1 && pres1 > pres3) { blue2(); red1(); delay(1000); }
if (pres2 < pres3 && pres3 > pres1) { blue2(); red3(); delay(1000);
// } else { // off();
} Serial.print(pres1); Serial.print("");Serial.print (pres2); Serial.print(""); Serial.println(pres3); }