====== Ialt() ====== ''Ialt()'' toggles the specified state ON/OFF at each input rising edge. {{:en-us_commands:reference:ialt.svg?900|Ialt command operation flow}} ''void Ialt(bool input, bool &state_var)'' ===== Commands ===== ^ Command ^ Arguments ^ Return Value ^ Operation ^ | ''Ialt(input, state_var)'' | ''bool input''\\ ''bool &state_var'' | ''void'' | Toggles the specified state ON/OFF at each input rising edge. | ===== Example ===== const uint8_t COMMAND_INPUT = 0; const uint8_t MOTOR_OUTPUT = 32; void setup() { Serial.begin(115200); } void loop() { const bool input = IdigitalRead(COMMAND_INPUT, 5); // Read the input repeatedly and update only if all samples match. If HIGH and LOW are mixed, retain the previous stable state. const bool started = Iup(0, input); // Return true only at the instant the input changes from OFF to ON. const bool stopped = Idown(0, input); // Return true only at the instant the input changes from ON to OFF. static bool run = false; Ialt(started, run); // Toggle the specified state ON/OFF at each rising input edge. digitalWrite(MOTOR_OUTPUT, run ? HIGH : LOW); if (started) Serial.println(F("motor started")); if (stopped) Serial.println(F("command released")); } ===== Precautions ===== Using the same ''id'' for different signals may mix their previous states. Do not set the minimum and maximum of the ''Iscale'' input range to the same value. [[:en-us_commands:builtin|← Built-in Command List]]