digitalWrite()
принимает value
по значению, а не по указателю, поэтому оно должно быть
digitalWrite(led,*led_state);
, вы забыли разыменования везде в коде. Строка
led_state = !led_state;
не выдает ошибку, потому что это допустимо, но это огромная ошибка. После этого указателя led_state
- нулевой указатель, если он не был нулевым. Я уверен, что вы имели в виду
*led_state = !(*led_state);
Также неясно, что вы ожидаете, потому что ничто в документации не позволяет указывать произвольные значения для digitalWrite
, только HIGH и LOW. Не уверен, что они равны, если LOW равен 0, то все в порядке, в противном случае строка выше приведет к нулю, записанному в led_state
Предложения по документации общего стиля:
if(*led_state)
digitalWrite(led,HIGH);
else
digitalWrite(led,LOW);