#include <Firmata.h>
byte ledPinMap[5] = {2, 3, 4, 5, 6}; // Map each LED to specific pins
byte ledState[5] = {0, 0, 0, 0, 0}; // Keep track of LED states (ON/OFF)
void analogWriteCallback(byte pin, int value)
{
if (IS_PIN_DIGITAL(pin)) {
// Check if the value is greater than a threshold to turn the LED on/off
if (value > 127) {
digitalWrite(ledPinMap[pin], HIGH); // Turn on the LED
} else {
digitalWrite(ledPinMap[pin], LOW); // Turn off the LED
}
}
}
void systemResetCallback()
{
// Reset all LEDs to off
for (byte i = 0; i < 5; i++) {
ledState[i] = LOW;
digitalWrite(ledPinMap[i], LOW);
}
}
void setup()
{
Firmata.setFirmwareVersion(FIRMATA_FIRMWARE_MAJOR_VERSION, FIRMATA_FIRMWARE_MINOR_VERSION);
Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
Firmata.attach(SYSTEM_RESET, systemResetCallback);
Firmata.begin(57600);
systemResetCallback();
// Set up LED pins as OUTPUT and turn them off initially
for (byte i = 0; i < 5; i++) {
pinMode(ledPinMap[i], OUTPUT);
digitalWrite(ledPinMap[i], LOW);
}
}
void loop()
{
while (Firmata.available())
Firmata.processInput();
}
No comments:
Post a Comment