I asked Chat GPT to write arduino code – and it blew my mind!

Write and Arduino sketch that has 4 motor controllers and s-bus inputs from a remote control. Then midi notes for each motor controller.

Sure! Here is an example of an Arduino sketch that uses four motor controllers and receives s-bus inputs from a remote control, and also maps MIDI notes to each motor controller:

#include <SBUS.h> // include the SBUS library
#include <MIDI.h> // include the MIDI library

// define the pin numbers for the s-bus input and the four motor controllers
const int SBUS_PIN = 10;
const int MOTOR1_PIN = 3;
const int MOTOR2_PIN = 5;
const int MOTOR3_PIN = 6;
const int MOTOR4_PIN = 9;

// create an instance of the SBUS library
SBUS sbus(SBUS_PIN);

// create an instance of the MIDI library
MIDI_CREATE_DEFAULT_INSTANCE();

void setup() {
// initialize the s-bus input and the four motor controllers
sbus.begin();
pinMode(MOTOR1_PIN, OUTPUT);
pinMode(MOTOR2_PIN, OUTPUT);
pinMode(MOTOR3_PIN, OUTPUT);
pinMode(MOTOR4_PIN, OUTPUT);

// begin MIDI communication
MIDI.begin(MIDI_CHANNEL_OMNI);
}

void loop() {
// read the s-bus input
sbus.read();

// get the values of the channels from the s-bus input
int channel1 = sbus.getChannel(1);
int channel2 = sbus.getChannel(2);
int channel3 = sbus.getChannel(3);
int channel4 = sbus.getChannel(4);

// set the speed of the first motor based on the value of channel 1
analogWrite(MOTOR1_PIN, channel1);

// set the speed of the second motor based on the value of channel 2
analogWrite(MOTOR2_PIN, channel2);

// set the speed of the third motor based on the value of channel 3
analogWrite(MOTOR3_PIN, channel3);

// set the speed of the fourth motor based on the value of channel 4
analogWrite(MOTOR4_PIN, channel4);

// check for incoming MIDI messages
MIDI.read();

// if a MIDI note on message is received, set the speed of the corresponding motor
if (MIDI.getType() == midi::NoteOn) {
int note = MIDI.getData1(); // get the MIDI note number
int velocity = MIDI.getData2(); // get the MIDI velocity value

// map the MIDI note to a motor controller and set its speed
if (note == 60) { // map MIDI note 60 to motor 1
analogWrite(MOTOR1_PIN, velocity);
}
else if (note == 61) { // map MIDI note 61 to motor 2
analogWrite(MOTOR2_PIN, velocity);
}
else if (note == 62) { // map MIDI note 62 to motor 3
analogWrite(MOTOR3_PIN, velocity);
}
else if (note == 63) { // map MIDI note 63 to motor 4
analogWrite(MOTOR4_PIN, velocity);

CBC Rock Camp

My Brother Mike was on CBC Rock camp back in the day.

I found all the episodes here: