hi ich schon wieder
ich habe ein Problem im Arduino Sender Code. Dort wird in der Funktion next_t_button eine Variable "geschrottet". Die Variable wird eingelesen. Und in void loop stimmt sie noch (habe sie mir seriel ausgeben lassen). Wenn der Arduino nun in die genante next_t_button funktion geht bleibt die Variable anfangs noch korrekt, in dem moment wo er wieder in void loop zurück geht ist sie plötzlich ein anderer wert?!
// Project: DIY Thermocyler V2.0 Arduino
// Creator: Tobias and Torben
// Date of Creation: 10.12.16
#include "Nextion.h"
SoftwareSerial HMISerial(10,11); //RX,TX
SoftwareSerial ardserial(4,5); //RX,TX
int cycle = 0;
int cycle_help = 0;
int cycle_temp[] = {};
int cycle_time[] = {};
//Variablen fuer debugging
String softser = "";
String softread = "";
//----------------------------------------------------------------------------------------------------------------------
//Nextions Display Buttons
//Home Screen
NexButton start = NexButton(0,1,"start");
//Nextion Test Mode Buttons
NexButton heat = NexButton(1,1,"heat");
NexButton cool = NexButton(1,2,"cool");
NexSlider pwm_heat = NexSlider(1,6,"pwm_heat");
NexSlider pwm_fan = NexSlider(1,5,"pwm_fan");
//Nextion Cycle Buttons/Nummber
NexButton check = NexButton(2,12,"check");
NexNumber n_cycle = NexNumber(2,16,"n_cycle");
//Nextion Cycle Time Buttons/Nummber
NexButton check_t = NexButton(5,12,"b11");
NexButton next_t = NexButton(5,17,"b13");
NexButton back_t = NexButton(5,16,"b12");
NexNumber n_cycle_t = NexNumber(5,12,"n_cycle");
NexNumber n_cycle_c = NexNumber(5,18,"n0");
//----------------------------------------------------------------------------------------------------------------------
char buffer[100] = {0};
//Button Press abfrage
NexTouch *nex_listen_list[] = {
&heat,
&cool,
&pwm_heat,
&pwm_fan,
&check,
&check_t,
&next_t,
&back_t,
&start,
NULL
};
//----------------------------------------------------------------------------------------------------------------------
//Arduino Inilisation
void setup() {
nexInit();
Serial.begin(57600);
//ardserial.begin(19200);
while (!Serial){
}
Serial.println("USB-to-PC Connection etablished");
//----------------------------------------------------------------------------------------------------------------------
//Attach Button Funktions
//Home Screen BUttons
start.attachPush(start_cycle, &start);
//Attach Test Mode Buttons
heat.attachPush(heat_button, &heat);
cool.attachPush(cool_button, &cool);
pwm_heat.attachPop(pwm_heat_slider, &pwm_heat);
pwm_fan.attachPop(pwm_fan_slider, &pwm_fan);
//Attach Cycle Buttons
check.attachPush(check_cycle_button, &check);
check_t.attachPush(check_time_button,&check_t);
next_t.attachPush(next_t_button,&next_t);
back_t.attachPush(back_t_button,&back_t);
//----------------------------------------------------------------------------------------------------------------------
Serial.println("Setup Complet");
}
//Main Loop waiting for actions
void loop() {
nexLoop(nex_listen_list);
}
//----------------------------------------------------------------------------------------------------------------------
//start Cycle
void start_cycle(void *ptr){
Serial.print("FUCK FUCK");
sendData();
}
//sending data funktion
void sendData(){
int temp_ok = 0;
int time_ok = 0;
int cycle_ok = 0;
int i = 0;
while(!ardserial){
while(cycle_ok == 0){
ardserial.print("!S");
cycle_ok = ardserial.read();
}
ardserial.print(cycle);
while(temp_ok == 0){
temp_ok = ardserial.read();
}
for (byte i = 0; i < (sizeof(cycle_temp)/sizeof(cycle_temp[0])); i++) {
ardserial.print(cycle_temp[i]);
}
i = 0;
while(time_ok == 0){
time_ok = ardserial.read();
}
for (byte i = 0; i < (sizeof(cycle_time)/sizeof(cycle_time[0])); i++) {
ardserial.print(cycle_time[i]);
}
delay(100);
ardserial.print("Finished");
}
loop();
}
//----------------------------------------------------------------------------------------------------------------------
//Read Data from Nextion
void check_cycle_button(void *ptr){
uint32_t cycle_value_value = 0;
n_cycle.getValue(&cycle_value_value);
cycle = cycle_value_value;
Serial.println(cycle_value_value);
Serial.println(cycle);
loop();
}
//Time of each Cycles
void check_time_button(void *ptr){
uint32_t cycle_t_value = 0;
n_cycle_t.getValue(&cycle_t_value);
cycle_time[cycle_help] = cycle_t_value;
cycle_help = 0;
int h = 0;
for (h = 0; h <sizeof(cycle_time);h++){
Serial.print(cycle_time[h]);
}
loop();
}
//Temp for each Cycle
void next_t_button(void *ptr){
uint32_t cycle_t_value = 0;
Serial.println("Fucking Cycle: ");
Serial.print(cycle);
if (cycle_help == cycle-1){
n_cycle_t.getValue(&cycle_t_value);
cycle_time[cycle_help] = cycle_t_value;
cycle_help = 0;
n_cycle_c.setValue(cycle_help);
}else {
n_cycle_t.getValue(&cycle_t_value);
cycle_time[cycle_help] = cycle_t_value;
++cycle_help;
n_cycle_c.setValue(cycle_help);
n_cycle_t.setValue(0);
}
Serial.println(cycle);
loop();
}
void back_t_button(void *ptr){
if (cycle_help == 0){
cycle_help = cycle;
n_cycle_t.setValue(cycle_time[cycle_help]);
n_cycle_c.setValue(cycle_help);
}else {
--cycle_help;
n_cycle_t.setValue(cycle_time[cycle_help]);
n_cycle_c.setValue(cycle_help);
}
loop();
}
//----------------------------------------------------------------------------------------------------------------------
//Begin Test Mode
void heat_button (void *ptr){
Serial.println("!T");
Serial.println("!H");
loop();
}
void cool_button (void *ptr){
Serial.println("!T");
Serial.println("!C");
loop();
}
void pwm_heat_slider (void *ptr){
uint32_t pwm_heat_value = 0;
pwm_heat.getValue(&pwm_heat_value);
Serial.println("!T");
Serial.println("!V");
Serial.println(pwm_heat_value);
loop();
}
void pwm_fan_slider (void *ptr){
uint32_t pwm_fan_value = 0;
pwm_fan.getValue(&pwm_fan_value);
Serial.println("!T");
Serial.println("!F");
Serial.println(pwm_fan_value);
loop();
}