Witam.
Przede wszystkim dziękuję za przyjęcie na owe forum. Udało mi się skończyć projekt mający na celu pomiar rezystancji człowieka za pomocą czujnika GSR - wykrywacz kłamstw. Jedna chciałem dodać kolejny czujnik GSR do mojej arduino uno jednak mam duży problem z określeniem komend. Pomimo dodawania różnych nie jestem w stanie osiągnąć poprawnie tego celu. Poniżej oryginalny kod dla arduino z jednym czujnikiem:
const int GSR=A0;
int sensorValue=0;
int gsr_average=0;
void setup(){
Serial.begin(9600);
}
void loop(){
long sum=0;
for(int i=0;i<10;i++) //Average the 10 measurements to remove the glitch
{
sensorValue=analogRead(GSR);
sum += sensorValue;
delay(15);
}
gsr_average = sum/10;
Serial.print (200); Serial.print (",");
Serial.print (300); Serial.print (",");
Serial.println(gsr_average);
}
Pytanie teraz jaki powinień być poprawny kod dla drugiego czujnika podłączonego do wejścia A1 o tych samych pozostałych parametrach?
Kod:
const int GSR=A0, GS1=A1;
int sensorValue=0;
int gsr_average=0;
void setup(){
Serial.begin(9600);
}
void loop(){
long sum=0;
for(int i=0;i<10;i++) //Average the 10 measurements to remove the glitch
{
sensorValue=analogRead(GSR);
sum += sensorValue;
delay(15);
}
gsr_average = sum/10;
Serial.print (200); Serial.print (",");
Serial.print (300); Serial.print (",");
Serial.println(gsr_average);
for(int i=0;i<10;i++) //Average the 10 measurements to remove the glitch
{
sensorValue=analogRead(GSR1);
sum += sensorValue;
delay(15);
}
gsr_average = sum/10;
Serial.print (200); Serial.print (",");
Serial.print (300); Serial.print (",");
Serial.println(gsr_average);
}
Możesz sobie też zrobić drugi zestaw reszty zmiennych globalnych, jeśli chcesz je potem wykorzystywać. Kod jest oczywiście kiepski, tak samo jak pierwowzór, naucz się używać millis();
Witam ponownie. Na początek dziękuję Irvin za szybką odpowiedź. Uruchomiłem przesłany przez Ciebie kod oraz go zweryfikowałem jednak nie do końca o taki efekt mi chodziło. Po jego uruchomieniu arduino generuje następujące wartości:
200,300,1073
200,300,583
200,300,1073
200,300,583
200,300,1073
200,300,583
O ile pierwsze dwie wartości są określone "na sztywno", wartość 583 to odczyt z czujnika A0 jednak już wartość 1073 to suma z obydwu czujników gdzie powinna to być wartość odczytana tylko z czujnika A1.
Starałem się zmodernizować Twój kod jednak po długich kombinacjach nie udało się osiągnąć celu.
Kolejną rzeczą jest generujący się wykres, chciałbym aby krzywe były niezalezne od siebie i przebiegały według własnych odczytów, na chwilę obecną jest jak na zdjęciu w załączniku.
Pozdrawiam
(23-01-2024, 00:10)matchwalik napisał(a): [ -> ]O ile pierwsze dwie wartości są określone "na sztywno", wartość 583 to odczyt z czujnika A0 jednak już wartość 1073 to suma z obydwu czujników gdzie powinna to być wartość odczytana tylko z czujnika A1.
Trzeba wyzerować zmienną
sum po wykorzystaniu, czyli po obliczeniu średniej z pierwszego czujnika.
Tą zmienną long sum sobie po prostu wyzeruj po zakończeniu wydruków z A0, albo zrób drugi zestaw wszystkich zmiennych. Pierwsza wartość jednak powinna być z A0, rozumiem, że po prostu tak się skopiowało do pokazania tutaj, no i jedna literka koledze umknęła przy definicji zmiennej:
const int GSR=A0, GS1=A1; powinno być const int GSR=A0, GSR1=A1;
Tym bardziej do wykresów musisz możesz drugi zestaw zmiennych i dopiero po wyliczeniu obu średnich zrobić printy, żebyś miał w jednej linii to wydrukowane, albo tak:
Kod:
const int GSR=A0, GSR1=A1;
int sensorValue=0;
int gsr_average=0;
void setup(){
Serial.begin(9600);
}
void loop(){
long sum=0;
for(int i=0;i<10;i++) //Average the 10 measurements to remove the glitch
{
sensorValue=analogRead(GSR);
sum += sensorValue;
delay(15);
}
gsr_average = sum/10;
Serial.print (200); Serial.print (",");
Serial.print (300); Serial.print (",");
Serial.print(gsr_average);Serial.print (",");
sum=0;
for(int i=0;i<10;i++) //Average the 10 measurements to remove the glitch
{
sensorValue=analogRead(GSR1);
sum += sensorValue;
delay(15);
}
gsr_average = sum/10;
Serial.println(gsr_average);
}
Im bardziej ten program będziesz chciał rozbudować tym bardziej popieram pomysł ogarnięcia millis.
Bardzo dziękuję Kaczakat. Właśnie o to mi chodziło. Teraz zapoznam się się z funkcją o której pisaliście i będę rozbudowywał projekt.
Pozdrawiam