Kört fast i C++ (Arduino)
Postat: 24 november 2016, 13:32:09
Hej, jag håller på att bygga en ljusmätare, den skall aktiveras med antingen en fysisk knapp eller via ett kommande via seriell kommunikation.
Just nu har jag bara lyckats skriva koden så den fungerar med den fysiska knappen;
Det jag vill ha in är att jag via att skriva te.x "GetSQM" i serial monitor och får en utläsning.
Det jag har kört fast på är "or"
alltså, när jag trycker på den fysiska knappen "Eller" skriver kommando i monitor ---> kör mätningen...
Någon som kan ge en pointer?
/MVH
Just nu har jag bara lyckats skriva koden så den fungerar med den fysiska knappen;
Kod: Markera allt
#include <FreqMeasure.h>
#include <Math.h>
#include <LiquidCrystal.h>
float Msqm;
const float A = 22.0;
int buttonSQM = A2;
int val = 0;
int reading = 0;
int percentage = 0;
LiquidCrystal lcd (12, 11, 10, 9, 7, 6);
byte byteRead;
void setup() {
pinMode(buttonSQM, INPUT_PULLUP);
digitalWrite(buttonSQM, HIGH);
lcd.begin(16,2);
Serial.begin(19200);
}
double sum=0;
int count=0;
void loop() {
val = digitalRead(buttonSQM);
if (val == LOW) {
reading = 1;
FreqMeasure.begin();
while(reading) {
if (FreqMeasure.available()) {
// average several reading together
sum = sum + FreqMeasure.read();
count +=1;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Reading");
lcd.setCursor(8,0);
lcd.print(percentage);
lcd.setCursor(11,0);
lcd.print("%");
percentage = count/31.0*100.0;
Serial.print("Counts: ");
Serial.print(count);
Serial.print(" Progress: ");
Serial.print(percentage);
Serial.println("%");
if (count > 30) {
double frequency = F_CPU / (sum / count);
sum = 0;
count = 0;
Msqm = A - 2.5*log10(frequency); //Frequency to magnitudes/arcSecond2 formula
lcd.clear();
lcd.setCursor(0,0);
lcd.println("Mag/As2: ");
lcd.setCursor(9,0);
lcd.print(Msqm);
Serial.print(Msqm);
delay(5000);
lcd.clear();
reading = 0;
FreqMeasure.end();
}
}
}
}
}
Det jag har kört fast på är "or"
alltså, när jag trycker på den fysiska knappen "Eller" skriver kommando i monitor ---> kör mätningen...
Någon som kan ge en pointer?
/MVH