Komunikasi Arduino Dan Program C# body { font-family: sans-serif; line-height: 1.6; max-width: 800px; margin: 40px auto; padding: 0 20px; color:
#0078d7; color: white; padding: 20px; margin: 20px 0; border-radius: 5px; } Komunikasi Arduino Dan Program C#
Script Extension Untuk Aplikasi C#
public static class ArduinoHelper
{
public enum PinMode : int
{
HIGH, LOW
}
public enum IOMODE
{
INPUT, OUTPUT
}
public static void DigitalWrite(this SerialPort serialPort, int Pin, PinMode pinMode)
{
serialPort?.WriteLine("DigitalWrite " + Pin.ToString() + " " + (pinMode == PinMode.HIGH ? "HIGH" : "LOW"));
}
public static void AnalogWrite(this SerialPort serialPort, int Pin, int value)
{
serialPort?.WriteLine("AnalogWrite " + Pin.ToString() + " " + value.ToString());
}
public static void SetIOMode(this SerialPort serialPort, int Pin, IOMODE value)
{
serialPort?.WriteLine("PinMode " + Pin.ToString() + " " + (value == IOMODE.INPUT ? "INPUT" : value == IOMODE.OUTPUT ? "OUTPUT" : "INPUT"));
}
}
Script Pada Arduino
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
lcd.begin(20, 4);
lcd.print("Waiting For Client!");
}
void loop() {
if (Serial.available()) {
String message = Serial.readString();
Serial.println("Received message: " + message);
lcd.clear();
if (message.indexOf("13 ON") != -1) {
digitalWrite(13, HIGH);
lcd.print("Pin 13: HIGH");
}
else if (message.indexOf("13 OFF") != -1) {
digitalWrite(13, LOW);
lcd.print("Pin 13: LOW");
}
else if (message.indexOf("PinMode") != -1) {
int pinIndex = message.indexOf(" ");
int modeIndex = message.indexOf(" ", pinIndex + 1);
int pin = message.substring(pinIndex + 1, modeIndex).toInt();
String mode = message.substring(modeIndex + 1);
if (mode.indexOf("OUTPUT") != -1) {
pinMode(pin, OUTPUT);
lcd.print("Pin ");
lcd.print(pin);
lcd.print(" set as OUTPUT");
}
else if (mode.indexOf("INPUT") != -1) {
pinMode(pin, INPUT);
lcd.print("Pin ");
lcd.print(pin);
lcd.print(" set as INPUT");
}
}
else if (message.indexOf("AnalogWrite") != -1) {
int pinIndex = message.indexOf(" ");
int valueIndex = message.indexOf(" ", pinIndex + 1);
int pin = message.substring(pinIndex + 1, valueIndex).toInt();
int value = message.substring(valueIndex + 1).toInt();
analogWrite(pin, value);
lcd.print("AnalogWrite Pin ");
lcd.print(pin);
lcd.print(" Value ");
lcd.print(value);
}
else if (message.indexOf("DigitalWrite") != -1) {
int pinIndex = message.indexOf(" ");
int valueIndex = message.indexOf(" ", pinIndex + 1);
int pin = message.substring(pinIndex + 1, valueIndex).toInt();
String value = message.substring(valueIndex + 1);
if (value.indexOf("HIGH") != -1) {
digitalWrite(pin, HIGH);
lcd.print("DigitalWrite Pin ");
lcd.print(pin);
lcd.print(" Value HIGH");
}
else if (value.indexOf("LOW") != -1) {
digitalWrite(pin, LOW);
lcd.print("DigitalWrite Pin ");
lcd.print(pin);
lcd.print(" Value LOW");
}
}
else
{
lcd.clear();
int numChunks = (message.length() + 19) / 20;
int startPos = 0;
for (int i = 0; i < numChunks; i++) {
int chunkSize = min(20, (int)message.length() - startPos);
lcd.setCursor(0, i);
lcd.print(message.substring(startPos, startPos + chunkSize));
startPos += chunkSize;
}
}
}
}
Discussion (0)