I have read a question here before, that feature is disabled, because of controller overcurrent damages, when people would hook up a buttload of leds to their arduinos, but is there a way to controll gpio high or low? I have a gauge cluster from a car, and i want to make the leds on it functional like handbrake, abs, traction controll etc... i would use n channel mosfets to pull their gnd low with an arduino pin, so not a lot of current would flow, and there would be like 5 lights, so i dont think it would damage the chip. maybe an advanced page in hw configuration that is accessible with a checkbox that i know i can screw up my arduino and simhub isn't responsible for it, the usual things. I would really appreciate
any help regarding this project, and happy holidays everyone!
hello, i have the same problem, i want to turn on dashboard lights like handbrake, abs, traction control, but i don't know how to do it
hello,
first i must to say i am totally newbie in programing but i found a sketch where the guy use relay for this fonction on a e46 cluster in SHcustomprotocol
see attach the code for the hand brake i found, i didn't try but can be a good start
#ifndef __SHCUSTOMPROTOCOL_H__ #define __SHCUSTOMPROTOCOL_H__ #include <Arduino.h> // Set Relay Pins int pinParkingpbrake = 40; // SimHub Variables String parkingbreak; class SHCustomProtocol { private: public: /* CUSTOM PROTOCOL CLASS SEE https://github.com/zegreatclan/SimHub/wiki/Custom-Arduino-hardware-support GENERAL RULES : - ALWAYS BACKUP THIS FILE, reinstalling/updating SimHub would overwrite it with the default version. - Read data AS FAST AS POSSIBLE in the read function - NEVER block the arduino (using delay for instance) - Make sure the data read in "read()" function READS ALL THE DATA from the serial port matching the custom protocol definition - Idle function is called hundreds of times per second, never use it for slow code, arduino performances would fall - If you use library suspending interrupts make sure to use it only in the "read" function when ALL data has been read from the serial port. It is the only interrupt safe place COMMON FUNCTIONS : - FlowSerialReadStringUntil('\n') Read the incoming data up to the end (\n) won't be included - FlowSerialReadStringUntil(';') Read the incoming data up to the separator (;) separator won't be included - FlowSerialDebugPrintLn(string) Send a debug message to simhub which will display in the log panel and log file (only use it when debugging, it would slow down arduino in run conditions) */ // Called when starting the arduino (setup method in main sketch) void setup() { // Output Definition pinMode(pinParkingpbrake, OUTPUT); // // Output Set digitalWrite(pinParkingpbrake, HIGH); // Called when new data is coming from computer void read() { // EXAMPLE 1 - read the whole message and sent it back to simhub as debug message // Protocol formula can be set in simhub to anything, it will just echo it // ------------------------------------------------------- parkingbreak = FlowSerialReadStringUntil(';'); /* // ------------------------------------------------------- // EXAMPLE 2 - reads speed and gear from the message // Protocol formula must be set in simhub to // format([DataCorePlugin.GameData.NewData.SpeedKmh],'0') + ';' + isnull([DataCorePlugin.GameData.NewData.Gear],'N') // ------------------------------------------------------- */ } // Called once per arduino loop, timing can't be predicted, // but it's called between each command sent to the arduino void loop() { // Parkingbrake if(parkingbreak.equalsIgnoreCase("True")) { digitalWrite(pinParkingpbrake, LOW); } else { digitalWrite(pinParkingpbrake, HIGH); }
Did anyone ever figure out how to do this?
Looking to do something similar...