ARDUINO не могу переделать DMX LED диммер на DMX AC диммер

DjMax

✩✩✩✩✩✩✩
16 Ноя 2020
3
0
Прошу помощи в переделки скетча! Нужно изменить один из каналов, чтобы он мог управлять перемнкой AC, то есть добавить обнаружение нуля. Не пойму как это сделать! в программировании я новичок, но очень хочется разобраться, поэтому и прошу помощи! вот код:

C++:
#include <TM1637.h>



#include <EEPROM.h>

#include <DMXSerial.h>

[SPOILER="Код диммера"][/SPOILER]



int ListDisp_0_123860296_1;

int ListDisp_123_123860296_1;

bool Point_123860296_1;

int Brightness_123860296_1;

TM1637 tm1637_123860296_1(4 , 2);

bool _Disp_123860296_1;

int _Disp1_123860296_1;

int _a_22705871_1;

byte adr_0_22705871_1;

byte adr_1_22705871_1;

byte adr_2_22705871_1;

byte adr_3_22705871_1;

byte adr_4_22705871_1;

byte adr_5_22705871_1;

byte adr_6_22705871_1;

int ListDisp_0_123860296_3;

int ListDisp_123_123860296_3;

bool Point_123860296_3;

int Brightness_123860296_3;

TM1637 tm1637_123860296_3(4 , 2);

bool _Disp_123860296_3;

int _Disp1_123860296_3;

const byte _menuParametrsArray[]  PROGMEM =  {1, 3, 1, 0, 0, 0, 2, 1, 1, 4, 1, 0};

int _menuValueArray_int[1];

const int _menuConstantValuesArray_int[]  PROGMEM =  {1, 512};

const char _flprogMenuNameString1[] PROGMEM = "Adres";

const char* const _flprogMenuStringsArray[] PROGMEM = { _flprogMenuNameString1};

struct _menuItemStricture {

int startInArrayIndex;

};

struct _menuMainStricture {

byte startIndex;

byte stopIndex;

bool isSwitchMenuAroundRing;

_menuItemStricture  currentItem;

};

_menuItemStricture _MenuItems[1];

_menuMainStricture _MainMenus[1];

int _gtv1;

bool _gtv2;

bool _gtv4;

int _gtv3 = 0;

int _gtv5 = 0;

int _gtv6 = 0;

int _gtv7 = 0;

int _gtv8 = 0;

int _gtv9 = 0;

bool _gtv10;

int _gtv11 = 0;

int _gtv12;

bool _gtv13;

int _gtv14;

bool _count4I = 0;

int _count4_Value = 0;

bool _count4MaxLO = 0;

int _swi7;

int _swi6;

int _swi1;

bool _bounseInputD8S = 0;

bool _bounseInputD8O = 0;

unsigned long _bounseInputD8P = 0UL;

int _swi5;

bool _gen4I = 0;

bool _gen4O = 0;

unsigned long _gen4P = 0UL;

bool _tim3I = 0;

bool _tim3O = 0;

unsigned long _tim3P = 0UL;

bool _count1I = 0;

int _count1_Value = 0;

bool _count1MaxLO = 0;

int _swi4;

bool _bounseInputD7S = 0;

bool _bounseInputD7O = 0;

unsigned long _bounseInputD7P = 0UL;

int _swi12;

int _swi2;

bool _tim1I = 0;

bool _tim1O = 0;

unsigned long _tim1P = 0UL;

bool _trgr1 = 0;

int _swi9;

bool _gen5I = 0;

bool _gen5O = 0;

unsigned long _gen5P = 0UL;

bool _count3I = 0;

int _count3_Value = 0;

bool _count3MaxLO = 0;

bool _count3MinLO = 0;

int _dms1Q0 = 0;

int _dms1Q1 = 0;

int _dms1Q2 = 0;

int _dms1Q3 = 0;

int _dms1Q4 = 0;

int _dms1Q5 = 0;

int _dms1Q6 = 0;

int _dms1Q7 = 0;

bool _gen3I = 0;

bool _gen3O = 0;

unsigned long _gen3P = 0UL;

int _swi11;

int _swi8;

int _swi3;

bool _tim4I = 0;

bool _tim4O = 0;

unsigned long _tim4P = 0UL;

int _swi10;

String _MenuBlock_268392632_MNO;

String _MenuBlock_268392632_VNO;

bool _MenuBlock_268392632_OEIS = 0;

bool _MenuBlock_268392632_OVUIS = 0;

bool _MenuBlock_268392632_OVDIS = 0;

unsigned long _MenuBlock_268392632_VUDST = 0UL;

unsigned long _MenuBlock_268392632_VUDSPT = 0UL;

byte _MenuBlock_268392632_VUDSM = 0;

int _MenuBlock_268392632_VUDPT = 0;

bool _MenuBlock_268392632_AMMO = 0;

bool _trgt2 = 0;

bool _trgt2I = 0;

bool _gen2I = 0;

bool _gen2O = 0;

unsigned long _gen2P = 0UL;



void setup()

{

pinMode(7, INPUT_PULLUP);

pinMode(8, INPUT_PULLUP);

pinMode(15, OUTPUT);

digitalWrite(15, 0);





if(((readByteFromEEPROM(0, 0, 0x0))) != 77) {

(updateByteToEEPROM(0, 0, 0x0, (77)));

(updateIntegerToEEPROM(1, 0, 0x0, (1)));

}

_bounseInputD7O =  digitalRead(7);

_bounseInputD8O =  digitalRead(8);

tm1637_123860296_1.set();

tm1637_123860296_1.init();

{

  DMXSerial.init(DMXReceiver);

}



tm1637_123860296_3.set();

tm1637_123860296_3.init();

_MenuItems[0].startInArrayIndex = 0;

_MainMenus[0].startIndex = 1;

_MainMenus[0].isSwitchMenuAroundRing = 0;

_MainMenus[0].stopIndex = 1;

_MainMenus[0].currentItem = _MenuItems[0];

_menuValueArray_int[0] = (readIntegerFromEEPROM(1, 0, 0x0));



}

void loop()

{



bool _tempVariable_bool;

byte _tempVariable_byte;



bool  _bounceInputTmpD7 =  (digitalRead (7));



if (_bounseInputD7S)

    {

     if (millis() >= (_bounseInputD7P + 40))

         {_bounseInputD7O= _bounceInputTmpD7; _bounseInputD7S=0;}

     }

else

    {

     if (_bounceInputTmpD7 != _bounseInputD7O )

         {_bounseInputD7S=1; _bounseInputD7P = millis();}

      }

bool  _bounceInputTmpD8 =  (digitalRead (8));



if (_bounseInputD8S)

    {

     if (millis() >= (_bounseInputD8P + 40))

         {_bounseInputD8O= _bounceInputTmpD8; _bounseInputD8S=0;}

     }

else

    {

     if (_bounceInputTmpD8 != _bounseInputD8O )

         {_bounseInputD8S=1; _bounseInputD8P = millis();}

      }









//Плата:1

//Наименование:Назначение адреса DMX

if (( (!(_bounseInputD7O)) && (!(_bounseInputD8O)) ))

{ if (_tim3I) { if (_isTimer(_tim3P, 3000)) {_tim3O = 1;}} else {_tim3I =1; _tim3P = millis();}} else {_tim3O = 0; _tim3I = 0;}

if (_gtv2) { if (! _gen3I) { _gen3I = 1; _gen3O = 1; _gen3P = millis(); } } else { _gen3I = 0 ; _gen3O= 0;}

if (_gen3I) {  if ( _isTimer ( _gen3P , 500 )) { _gen3P = millis(); _gen3O = ! _gen3O;}}

if (0){

_count1_Value = 1;

} else {

if (( (!(_bounseInputD7O)) || (!(_bounseInputD8O)) )){_count1_Value = 0;} else {

if (_gen3O){

if ( ! _count1I) {

_count1I = 1;

_count1_Value = _count1_Value + 1;

}} else {

_count1I = 0;}

}

}

_count1MaxLO = _count1_Value >= 10;

if(_count1MaxLO) _trgr1 = 0;

if(_tim3O) _trgr1 = 1;

if (( (_gtv4) || (_trgr1) )) {

_tempVariable_bool  =  1;

if ( ! _MenuBlock_268392632_OEIS ) {_MenuBlock_268392632_OEIS = 1;

}

_tempVariable_byte = pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex)+10]);

_MenuBlock_268392632_MNO = _readStringFromProgmem ((char*)pgm_read_word(&(_flprogMenuStringsArray[_tempVariable_byte - 1])));

_MenuBlock_268392632_VNO = _menuOutputValueString (0);

_MenuBlock_268392632_AMMO = (pgm_read_byte(&_menuParametrsArray[((_MainMenus[0].currentItem ).startInArrayIndex)+5]) ) == 0;

} else {

_tempVariable_bool  =  0;

if (_MenuBlock_268392632_OEIS){

_MenuBlock_268392632_OEIS = 0;

_menuUpdateToEEpromItems();

}

_MenuBlock_268392632_AMMO = 0;

_MenuBlock_268392632_MNO = "";

_MenuBlock_268392632_VNO = "";

}

if(!(_bounseInputD7O)) { if ( ! _MenuBlock_268392632_OVUIS) {_MenuBlock_268392632_OVUIS = 1; if (_tempVariable_bool){  _valueUpEvents(0); _MenuBlock_268392632_VUDST = millis();} }if (_tempVariable_bool){

if (_MenuBlock_268392632_VUDSM == 0) { if (_isTimer(_MenuBlock_268392632_VUDST , 2000 )) {_MenuBlock_268392632_VUDSM = 1; _MenuBlock_268392632_VUDSPT = millis(); _MenuBlock_268392632_VUDPT  = 300;}}  else { if (_MenuBlock_268392632_VUDSM == 1) { if (_isTimer(_MenuBlock_268392632_VUDST , 4000 )) {_MenuBlock_268392632_VUDSM = 2;_MenuBlock_268392632_VUDPT  = 50; } } if (_isTimer(_MenuBlock_268392632_VUDSPT , _MenuBlock_268392632_VUDPT )) { _valueUpEvents(0);  _MenuBlock_268392632_VUDSPT = millis();}  }

}} else {_MenuBlock_268392632_OVUIS = 0; if( ! ( !(_bounseInputD8O))){_MenuBlock_268392632_VUDSM = 0; }}

if(!(_bounseInputD8O)) { if ( ! _MenuBlock_268392632_OVDIS) {_MenuBlock_268392632_OVDIS = 1; if (_tempVariable_bool){  _valueDownEvents(0); _MenuBlock_268392632_VUDST = millis();}} if (_tempVariable_bool){

if (_MenuBlock_268392632_VUDSM == 0) { if (_isTimer(_MenuBlock_268392632_VUDST , 2000 )) {_MenuBlock_268392632_VUDSM = 1; _MenuBlock_268392632_VUDSPT = millis(); _MenuBlock_268392632_VUDPT  = 300;}}  else { if (_MenuBlock_268392632_VUDSM == 1) { if (_isTimer(_MenuBlock_268392632_VUDST , 4000 )) {_MenuBlock_268392632_VUDSM = 2;_MenuBlock_268392632_VUDPT  = 50; } } if (_isTimer(_MenuBlock_268392632_VUDSPT , _MenuBlock_268392632_VUDPT )) { _valueDownEvents(0);  _MenuBlock_268392632_VUDSPT = millis();}  }

}} else {_MenuBlock_268392632_OVDIS = 0; if( ! ( !(_bounseInputD7O))){_MenuBlock_268392632_VUDSM = 0; }}

_gtv2 = _MenuBlock_268392632_AMMO;



//Плата:2

//Наименование:Адрес DMX

_gtv1 = (_menuValueArray_int[0]);

_gtv4 = ((_menuValueArray_int[0])) == (512);



//Плата:3

//Наименование:Отображение адреса DMX

if (_gtv4 == 0) {

if (_gtv2) { if (! _gen5I) { _gen5I = 1; _gen5O = 1; _gen5P = millis(); } } else { _gen5I = 0 ; _gen5O= 0;}

if (_gen5I) {  if ( _isTimer ( _gen5P , 500 )) { _gen5P = millis(); _gen5O = ! _gen5O;}}

if(_gen5O)

{_swi9=16;}

else

{_swi9=10;}

if(_gtv2)

{_swi12=_swi9;}

else

{_swi12=10;}

if(( (!(_bounseInputD7O)) || (!(_bounseInputD8O)) )) {_tim4O = 1; _tim4I = 1;} else { if(_tim4I) {_tim4I = 0; _tim4P = millis();} else { if (_tim4O) {if ( _isTimer(_tim4P, 30000)) _tim4O = 0;}}}

if(_tim4O)

{_swi11=7;}

else

{_swi11=0;}

ListDisp_0_123860296_1 = _swi12;

ListDisp_123_123860296_1 = _gtv1;

Point_123860296_1 = 0;

Brightness_123860296_1 = _swi11;

tm1637_123860296_1.display(0,ListDisp_0_123860296_1);

    tm1637_123860296_1.display(1,ListDisp_123_123860296_1 / 100);



_Disp_123860296_1 = (ListDisp_123_123860296_1) > (99);

if (_Disp_123860296_1)

{_Disp1_123860296_1 = ListDisp_123_123860296_1 / 10 % 10;}

else

{_Disp1_123860296_1 =ListDisp_123_123860296_1 / 10;}

tm1637_123860296_1.display(2,_Disp1_123860296_1);

    // tm1637_123860296_1.display(2,ListDisp_123_123860296_1 / 10);

    tm1637_123860296_1.display(3,ListDisp_123_123860296_1 % 10);



if ( Point_123860296_1 ) tm1637_123860296_1.point(HIGH); else tm1637_123860296_1.point(LOW);

tm1637_123860296_1.set(Brightness_123860296_1);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;



}



//Плата:4

//Наименование:DMX - Выход

if (_gtv4 == 0) {

_a_22705871_1 = _gtv1;

{

int adr=_a_22705871_1;

    adr_0_22705871_1=DMXSerial.read(adr);

  adr_1_22705871_1=DMXSerial.read(adr+1);

  adr_2_22705871_1=DMXSerial.read(adr+2);

  adr_3_22705871_1=DMXSerial.read(adr+3);

adr_4_22705871_1=DMXSerial.read(adr+4);

adr_5_22705871_1=DMXSerial.read(adr+5);

adr_6_22705871_1=DMXSerial.read(adr+6);

}



_gtv14 = adr_6_22705871_1;

_gtv9 = adr_5_22705871_1;

_gtv8 = adr_4_22705871_1;

_gtv7 = adr_3_22705871_1;

_gtv6 = adr_2_22705871_1;

_gtv5 = adr_1_22705871_1;

_gtv3 = adr_0_22705871_1;

}



//Плата:5

//Наименование:Тест выхад

if (_gtv4 == 1) {

if (1) { if (! _gen4I) { _gen4I = 1; _gen4O = 1; _gen4P = millis(); } } else { _gen4I = 0 ; _gen4O= 0;}

if (_gen4I) {  if ( _isTimer ( _gen4P , 20 )) { _gen4P = millis(); _gen4O = ! _gen4O;}}

bool  _tmp2 = _gtv10;

if (_tmp2)  { if (! _trgt2I) _trgt2 = ! _trgt2; }

_trgt2I = _tmp2;

if (_gtv13){

_count4_Value = 0;

} else {

if (_trgt2){

if ( ! _count4I) {

_count4I = 1;

_count4_Value = _count4_Value + 1;

}} else {

_count4I = 0;}

}

_count4MaxLO = _count4_Value >= 8;

_gtv12 = _count4_Value;

_gtv13 = _count4MaxLO;

if (0){

_count3_Value = 0;

} else {

if (_gen4O){

if ( ! _count3I) {

_count3I = 1;

if (_trgt2){_count3_Value = _count3_Value + 1;} else{ _count3_Value = _count3_Value - 1;}

}} else {

_count3I = 0;}

}

_count3MaxLO = _count3_Value >= 255;

_count3MinLO = _count3_Value <= 0;

if (1)

{ if (_tim1I) { if (_isTimer(_tim1P, 200)) {_tim1O = 1;}} else {_tim1I =1; _tim1P = millis();}} else {_tim1O = 0; _tim1I = 0;}

if(_tim1O)

{_swi5=_count3_Value;}

else

{_swi5=0;}

_gtv11 = _swi5;

_gtv10 = ( (_count3MaxLO) || (_count3MinLO) );

if (1) { if (! _gen2I) { _gen2I = 1; _gen2O = 1; _gen2P = millis(); } } else { _gen2I = 0 ; _gen2O= 0;}

if (_gen2I) {  if ( _isTimer ( _gen2P , 200 )) { _gen2P = millis(); _gen2O = ! _gen2O;}}

if(_gen2O)

{_swi3=16;}

else

{_swi3=_gtv12;}

ListDisp_0_123860296_3 = _swi3;

ListDisp_123_123860296_3 = (map((_gtv11), (0), (255), (0), (100)));

Point_123860296_3 = 0;

Brightness_123860296_3 = 6;

tm1637_123860296_3.display(0,ListDisp_0_123860296_3);

    tm1637_123860296_3.display(1,ListDisp_123_123860296_3 / 100);



_Disp_123860296_3 = (ListDisp_123_123860296_3) > (99);

if (_Disp_123860296_3)

{_Disp1_123860296_3 = ListDisp_123_123860296_3 / 10 % 10;}

else

{_Disp1_123860296_3 =ListDisp_123_123860296_3 / 10;}

tm1637_123860296_3.display(2,_Disp1_123860296_3);

    // tm1637_123860296_3.display(2,ListDisp_123_123860296_3 / 10);

    tm1637_123860296_3.display(3,ListDisp_123_123860296_3 % 10);



if ( Point_123860296_3 ) tm1637_123860296_3.point(HIGH); else tm1637_123860296_3.point(LOW);

tm1637_123860296_3.set(Brightness_123860296_3);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;



if((_gtv12 == 0)){_dms1Q0 = _gtv11;}else {_dms1Q0 = 0;}

if((_gtv12 == 1)){_dms1Q1 = _gtv11;}else {_dms1Q1 = 0;}

if((_gtv12 == 2)){_dms1Q2 = _gtv11;}else {_dms1Q2 = 0;}

if((_gtv12 == 3)){_dms1Q3 = _gtv11;}else {_dms1Q3 = 0;}

if((_gtv12 == 4)){_dms1Q4 = _gtv11;}else {_dms1Q4 = 0;}

if((_gtv12 == 5)){_dms1Q5 = _gtv11;}else {_dms1Q5 = 0;}

if((_gtv12 == 6)){_dms1Q6 = _gtv11;}else {_dms1Q6 = 0;}

if((_gtv12 == 7)){_dms1Q7 = _gtv11;}else {_dms1Q7 = 0;}

if(!((_gtv12) == (0)))

{_swi6=_dms1Q7;}

else

{_swi6=_dms1Q0;}

_gtv14 = _swi6;

if(!((_gtv12) == (0)))

{_swi1=_dms1Q6;}

else

{_swi1=_dms1Q0;}

_gtv9 = _swi1;

if(!((_gtv12) == (0)))

{_swi2=_dms1Q5;}

else

{_swi2=_dms1Q0;}

_gtv8 = _swi2;

if(!((_gtv12) == (0)))

{_swi4=_dms1Q4;}

else

{_swi4=_dms1Q0;}

_gtv7 = _swi4;

if(!((_gtv12) == (0)))

{_swi10=_dms1Q3;}

else

{_swi10=_dms1Q0;}

_gtv6 = _swi10;

if(!((_gtv12) == (0)))

{_swi8=_dms1Q2;}

else

{_swi8=_dms1Q0;}

_gtv5 = _swi8;

if(!((_gtv12) == (0)))

{_swi7=_dms1Q1;}

else

{_swi7=_dms1Q0;}

_gtv3 = _swi7;

}



//Плата:6

//Наименование:Выход

analogWrite(3, _gtv3);

analogWrite(5, _gtv5);

analogWrite(6, _gtv6);

analogWrite(9, _gtv7);

analogWrite(10, _gtv8);

analogWrite(11, _gtv9);

digitalWrite(15, (_gtv14) >= (127));













}



bool _isTimer(unsigned long startTime, unsigned long period )

  {

  unsigned long currentTime;

currentTime = millis();

if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}

  }

String _readStringFromProgmem (char *string)

{

String result = String("");

while (pgm_read_byte(string)!='\0')

{

result=result+ char(pgm_read_byte(string));

    string++;

    }

return result;

}

void _valueUpEvents (byte menuIndex)

{

byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+2]);

byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+1]);

byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+6]);

byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+8]);

if (itemType == 3) {if (! indexMax == 0) { if ( ! (int(pgm_read_word(&_menuConstantValuesArray_int[indexMax -1])) > int(_menuValueArray_int[valIndex -1]))) {return;} }

_menuValueArray_int[valIndex -1] = _menuValueArray_int[valIndex -1] + (pgm_read_word(&_menuConstantValuesArray_int[indexStep -1])); }

}

void _valueDownEvents (byte menuIndex)

{



byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+2]);

byte itemType = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+1]);

byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+7]);

byte indexStep = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+8]);

if (itemType == 3) { if (! indexMin == 0) { if ( ! ((int(pgm_read_word(&_menuConstantValuesArray_int[indexMin - 1]))) < int(_menuValueArray_int[valIndex - 1]))) {return;}}

_menuValueArray_int[valIndex - 1] = _menuValueArray_int[valIndex - 1] - (pgm_read_word(&_menuConstantValuesArray_int[indexStep - 1])); }

}

String _menuOutputValueString (byte menuIndex)

{

byte itemType = pgm_read_byte(&_menuParametrsArray[ (((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+1]);

byte valIndex = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+2]);

byte indexMin = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+7]);

byte indexMax = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+6]);

if( valIndex == 0){ return "";}

byte convFormat = pgm_read_byte(&_menuParametrsArray[(((_MainMenus[menuIndex]).currentItem).startInArrayIndex)+9]);

if(itemType == 3) { return _convertNamber(itemType, convFormat, valIndex, indexMax, indexMin);}

return "";

}

void _menuUpdateToEEpromItems()

{

(updateIntegerToEEPROM(1, 0, 0x0, ((_menuValueArray_int[0]))));

}

String _convertNamber(byte itemType, byte convFormat, byte valIndex, byte indexMax, byte indexMin)

{

if (itemType== 3) {

if (convFormat == 4) { return String((_menuValueArray_int[valIndex - 1 ]),DEC);}

if (convFormat == 5) { return String((_menuValueArray_int[valIndex - 1]),HEX);}

if (convFormat == 6) { return String((_menuValueArray_int[valIndex -1]),BIN);}

}

}

byte readByteFromEEPROM(int addres, byte bitAddres, byte chipAddres)

{

return EEPROM.read(addres);

}

void updateByteToEEPROM(int addres, byte bitAddres, byte chipAddres, byte value)

{

return EEPROM.update(addres, value);

}

int readIntegerFromEEPROM(int addres, byte bitAddres, byte chipAddres)

{

byte hight = readByteFromEEPROM( addres,  bitAddres,  chipAddres);

byte low = readByteFromEEPROM( (addres+1),  bitAddres,  chipAddres);

return  word(hight, low);

}

void updateIntegerToEEPROM(int addres, byte bitAddres, byte chipAddres, int value)

{

updateByteToEEPROM( addres,  bitAddres,  chipAddres, highByte(value));

updateByteToEEPROM( (addres+1),  bitAddres,  chipAddres, lowByte(value));

}
 
Изменено:

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
Уважаемый @DjMax, а по прерываниям не проще ли сделать? Оптопарой отслеживайте 0 сети, без этого синхронизация затруднена, этот же импульс будет запускать прерывание, которое будет делать всё, что Вам нужно.. Или я чего не так понял? И да, у меня чуть было глаза не вытекли, пока Ваш код читал. Неужели трудно обернуть в оболочку С++? Этот сайт такое позволяет...
 
Изменено:

DjMax

✩✩✩✩✩✩✩
16 Ноя 2020
3
0
Уважаемый @DjMax, а по прерываниям не проще ли сделать? Оптопарой отслеживайте 0 сети, без этого синхронизация затруднена, этот же импульс будет запускать прерывание, которое будет делать всё, что Вам нужно.. Или я чего не так понял?
Все правильно, через прерывание! Через функцию attachInterrupt(). Я просто не совсем понимаю как его вставить в этот код! Код скомпилирован через flprog и получился поэтому таким сложным! Ещё раз повторюсь, что я не силён в программировании, поэтому прошу помощи!
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
@DjMax, так код из flprog хрен пойми. Вряд ли Вам кто-то тут поможет. Увы и ах.