В общем нужно написать скетч, чтобы в зависимости от показаний датчика 6675, он изменял мощность галлогенок, управляемых симистором Код (C++): #include "max6675.h" int incomingByte = 0; // for incoming serial data int AC_LOAD = 3; // Output to Opto Triac pin volatile int dimming = 117; // Dimming level (0-128) 0 = ON, 128 = OFF volatile double cels = 0; int thermoDO = 9; //он же SO int thermoCS = 10; int thermoCLK = 11; //он же SCK MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO); void setup() { Serial.begin(9600); pinMode(AC_LOAD, OUTPUT); // Set the AC Load as output attachInterrupt(0, zero_crosss_int, RISING); // Choose the zero cross interrupt # from the table above //активируем питание и землю Serial.println("MAX6675 test"); //ждем стабилизации чипа MAX delay(500); } void zero_crosss_int() // function to be fired at the zero crossing to dim the light { // Firing angle calculation :: 50Hz-> 10ms (1/2 Cycle) // (10000us - 10us) / 128 = 75 (Approx) int dimtime = (75*dimming); delayMicroseconds(dimtime); // Off cycle digitalWrite(AC_LOAD, HIGH); // triac firing delayMicroseconds(10); // triac On propogation delay digitalWrite(AC_LOAD, LOW); // triac Off } void loop() { //Выводим показания в монитор порта Serial.println("C = "); cels = thermocouple.readCelsius(); Serial.println(cels); if(cels < 200){ dimming = 30; } } } В данном случае, показания термопары не меняются, и задаются единожды, при запуске, дальше просто дублируются. Как сделать, чтобы они менялись, что-то не могу понять. Судя по всему мешает прерывание, но без него не будет управляться симистор.