Hello all!
I am back after more than 10 years. ![]()
My first question:
I have code loaded into Arduino (mega). The code consists of many programs/sub programs, how do I start any of them from Arduino IDE (or later maybe from Delphi)?
Thanks,
Juha
You can upload only one program from the PC to the Arduino at a time.
i've used some form of the following code on all my projects to exercise functions using single character cmds entered thru the serial monitor. It captures a multidigit value preceeding the cmd to be used as an argument. Multiple arguments requiring capturing a value in a variable
// pcRead - debugging using serial monitor
const char version [] = "PcRead 240209a";
int debug = 0;
// -----------------------------------------------------------------------------
// process single character commands from the PC
#define MAX_CHAR 10
char s [MAX_CHAR] = {};
int analogPin = 0;
void
pcRead (void)
{
static int val = 0;
if (Serial.available()) {
int c = Serial.read ();
switch (c) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
val = c - '0' + (10 * val);
break;
case 'A':
analogPin = val;
Serial.print ("analogPin = ");
Serial.println (val);
val = 0;
break;
case 'D':
debug ^= 1;
break;
case 'I':
pinMode (val, INPUT);
Serial.print ("pinMode ");
Serial.print (val);
Serial.println (" INPUT");
val = 0;
break;
case 'O':
pinMode (val, OUTPUT);
Serial.print ("pinMode ");
Serial.print (val);
Serial.println (" OUTPUT");
val = 0;
break;
case 'P':
pinMode (val, INPUT_PULLUP);
Serial.print ("pinMode ");
Serial.print (val);
Serial.println (" INPUT_PULLUP");
val = 0;
break;
case 'a':
Serial.print ("analogRead: ");
Serial.println (analogRead (val));
val = 0;
break;
case 'c':
digitalWrite (val, LOW);
Serial.print ("digitalWrite: LOW ");
Serial.println (val);
val = 0;
break;
case 'p':
#if !defined(ARDUINO_ARCH_ESP32)
analogWrite (analogPin, val);
Serial.print ("analogWrite: pin ");
Serial.print (analogPin);
Serial.print (", ");
Serial.println (val);
val = 0;
#endif
break;
case 'r':
Serial.print ("digitalRead: pin ");
Serial.print (val);
Serial.print (", ");
Serial.println (digitalRead (val));
val = 0;
break;
case 's':
digitalWrite (val, HIGH);
Serial.print ("digitalWrite: HIGH ");
Serial.println (val);
val = 0;
break;
case 't':
Serial.print ("pinToggle ");
Serial.println (val);
digitalWrite (val, ! digitalRead (val));
val = 0;
break;
case 'v':
Serial.print ("\nversion: ");
Serial.println (version);
break;
case '\n': // ignore
break;
case '?':
Serial.println ("\npcRead:\n");
Serial.println (" [0-9] append to #");
Serial.println (" # A - set analog pin #");
Serial.println (" # D - set debug to #");
Serial.println (" # I - set pin # to INPUT");
Serial.println (" # O - set pin # to OUTPUT");
Serial.println (" # P - set pin # to INPUT_PULLUP");
Serial.println (" # a - analogRead (pin #)");
Serial.println (" # c - digitalWrite (pin #, LOW)");
Serial.println (" # p - analogWrite (analogPin, #)");
Serial.println (" # r - digitalRead (pin #)");
Serial.println (" # s - digitalWrite (pin #, HIGH)");
Serial.println (" t - toggle pin output");
Serial.println (" v - print version");
Serial.println (" ? - list of commands");
break;
default:
Serial.print ("unknown char ");
Serial.println (c,HEX);
break;
}
}
}
// -----------------------------------------------------------------------------
void
loop (void)
{
pcRead ();
}
// -----------------------------------------------------------------------------
void
setup (void)
{
Serial.begin(9600);
Serial.println (version);
#if defined(ARDUINO_ARCH_ESP32)
Serial.println ("esp32");
#endif
}
Can you elaborate on that?
The mega is only going to contain the bootloader + whatever sketch you most recently uploaded.
@jremington I know you said
I wanted to clarify to @j_p_i that there can only be one sketch in the Arduino, because it was such an unusual question
In addition to the serial communication approach, if your device is WiFi-enabled, you could communicate with it over TCP or HTTP or even gRPC. (You could also do HTTP-over-serial or gRPC-over-serial.)
Or, if you close the serial monitor window, anything on the PC that can open a serial port and start talking at it.
If @j_p_i wants to use something that has a significant user base, documentation and examples, he might like
https://docs.arduino.cc/retired/hacking/software/FirmataLibrary/
a7
You're going to have to show the code. Don't forget to use code tags!
Did you write the code? That affects what questions may be asked.
Your code is exactly what I needed
Thanks a lot!
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.