Hallo zusammen
ich habe ein kleines Problem, ich hab mein Arduino Board dass Frequenzen misst und Ausgibt. Die gemessenen Werte werden an ein C# Programm ausgegeben, soweit funktioniert alles, jedoch möchte ich mein Arduino von dem C# aus starten können, dies ist mir jedoch leider noch nicht gelungen. Ich habe dafür den Startbutton der das ganze Arduino Programm "aktivieren" soll. Kann mir jemand helfen?
C# kommt in einem weiteren Post, habe sonst keinen Platz(PS: hat jemand der dass kann geschrieben)
und hier mein Arduino Code
#include <DueTimer.h>
#define oneHzSample 1000000// sample for the 1Hz signal expressed in microseconds
int AnzahlMesswert = 0;
char Frequenz = 'A';
int KTyp = 0;
const int TESTPIN = 43;
//---Frequenz mit Pushbutton aendern-----------------------------------------------------------------------------
int FrequenzFertig = 0;
//---Sinuskurve--------------------------------------------------------------------------------------------------
int count = 0;
int Array[] = {2048, 2254, 2455, 2646, 2822, 2979, 3113, 3221, 3300, 3348, 3365, 3348, 3300, 3221,
3113, 2979, 2822, 2646, 2455, 2254, 2048, 1842, 1641, 1450, 1274, 1117, 983, 875,
796, 748, 731, 748, 796, 875, 983, 1117, 1274, 1450, 1641, 1842};
//---Verstärkung-------------------------------------------------------------------------------------------------
int varVer = 0;
const int PINVer = 8;
//---Messwert----------------------------------------------------------------------------------------------------
const int MessungMic1 = A0;
const int MessungMic2 = A1;
float MessMic1 = 0;
float MessMic2 = 0;
float MesswertDurch1 = 0;
float MesswertDurch2 = 0;
//---VoidSetup---------------------------------------------------------------------------------------------------
void setup() {
analogWriteResolution(12); // Analoger Ausgang auf 12Bit gestellt (4096 levels)
analogReadResolution(12); // Analoger Eingang auf 12Bit gestellt (4069 levels)
Serial.begin(9600);
pinMode(PINVer, OUTPUT);
pinMode(TESTPIN, OUTPUT);
}
//---Hauptprogramm-----------------------------------------------------------------------------------------------
void loop() {
if(Serial.available()>0)
{
byte incommingbyte = Serial.read();
if(incommingbyte >= 1)
{
digitalWrite(TESTPIN, HIGH);
}
}
MesswertDurch1 = 0;
MesswertDurch2 = 0;
switch(Frequenz){
case 'A':
Timer5.attachInterrupt(wave).start(50);
delay(1000);
Messung();
writing();
Frequenz = 'B';
break;
case 'B':
Timer5.attachInterrupt(wave).start(25);
delay(1000);
Messung();
writing();
Frequenz = 'C';
break;
case 'C':
Timer5.attachInterrupt(wave).start(10);
delay(1000);
Messung();
writing();
Frequenz = 'D';
break;
case 'D':
Timer5.attachInterrupt(wave).start(5);
delay(1000);
Messung();
writing();
FrequenzFertig = FrequenzFertig + 1;
if(FrequenzFertig == 1){
varVer = 1;
verstaerkung();
Frequenz = 'A';
}
break;
default:
break;
}
if(FrequenzFertig == 2){
varVer = 0;
verstaerkung();
Frequenz = 'X';
}
}
//---Messung--------------------------------------------------------------------------------------------------------
void Messung(){
//if(Lietrplattentyp == 2){
do{
Messwert1();
Messwert2();
delay(50);
AnzahlMesswert = AnzahlMesswert + 1;
} while(AnzahlMesswert < 10);
AnzahlMesswert = 0;
//}
/if(Lietrplattentyp == 1){
do{
Messwert1();
delay(50);
AnzahlMesswert = AnzahlMesswert + 1;
} while(AnzahlMesswert < 10);
AnzahlMesswert = 0;
}/
}
//---Sinus Kurve Ausgabe--------------------------------------------------------------------------------------------
void wave(){
analogWrite(DAC0, Array[count]);
count++;
if(count == 40){
count = 0;
//delayMicroseconds(20);
}
}
//---Vertärkungsumstellung V2 / V400--------------------------------------------------------------------------------
void verstaerkung(){
if(varVer == 0){
digitalWrite(PINVer, LOW);
}
else if(varVer == 1){
digitalWrite(PINVer, HIGH);
}
}
//---Wert analog von Messung 1 einlesen-----------------------------------------------------------------------------------
void Messwert1(){
MessMic1 = analogRead(MessungMic1);
MessMic1 = MessMic1 / 1241;
MesswertDurch1 = MesswertDurch1 + MessMic1;
}
//---Wert analog von Messung 2 einlesen-----------------------------------------------------------------------------------
void Messwert2(){
MessMic2 = analogRead(MessungMic2);
MessMic2 = MessMic2 / 1241;
MesswertDurch2 = MesswertDurch2 + MessMic2;
}
//---Schreiben-----------------------------------------------------------------------------------
void writing(){
MesswertDurch1 = MesswertDurch1 / 10;
MesswertDurch2 = MesswertDurch2 / 10;
Serial.println(String(KTyp)+String(Frequenz)+String(varVer)+String(MesswertDurch1)+String(MesswertDurch2));
}
Ich danke euch schon im voraus
mfg swarley_swarley