Урезают сроки на проекты, в итоге приходится поставлять недоделанное г. не платят ЗП по 1-2 месяца, после увольнения. Любят пообещать премию за некую работу, после ее выдачи не выплатить зарплату мотивируя это тем, "мы же о премии договорились". ЗП часто платят по черному, используют нелицензионное программное обеспечение. 








// Plata.h

#ifndef _PLATA_h
#define _PLATA_h

//Пины подключенные к транзисторам
#include "RS485.h"
#define TH1 3
#define TL1 11
#define TH2 5 
#define TL2 6
#define TH3 7 //no pwm
#define TL3 8//no pwm
#define TH4 9
#define TL4 10

#if defined(ARDUINO) && ARDUINO >= 100
	#include "arduino.h"
#else
	#include "WProgram.h"
#endif

class PlataClass
{



 protected:
	 unsigned long dedtime = 2; //время в течении которого происходит вкл/откл транзистора
	 struct Apparat//содержит аппаратные настройки
	 {
		 unsigned long freq;//стандартная частота колебаний
		 byte chanel;//основной канал
		 bool pos;//основное положение транзисторов
	 };
 public:
	 Apparat apparat{16000,0,1};
	 //инициализировать плату
	 void begin() {
		 pinMode(TH1, OUTPUT); digitalWrite(TH1, LOW);
		 pinMode(TH2, OUTPUT); digitalWrite(TH2, LOW);
		 pinMode(TH3, OUTPUT); digitalWrite(TH3, LOW);
		 pinMode(TH4, OUTPUT); digitalWrite(TH4, LOW);
		 pinMode(TL1, OUTPUT); digitalWrite(TL1, LOW);
		 pinMode(TL2, OUTPUT); digitalWrite(TL2, LOW);
		 pinMode(TL3, OUTPUT); digitalWrite(TL3, LOW);
		 pinMode(TL4, OUTPUT); digitalWrite(TL4, LOW);
	 }

	 void digitalKanal(byte nomer, bool on, bool pos)//номер канала, вкл или выкл, позиция
	 {
		 if (on) {
			 switch (nomer) {

			 case 0:
				 if (pos) {//включаем
					 digitalWrite(TL1, LOW);
					 delayMicroseconds(dedtime);
					 digitalWrite(TH1, HIGH);
				 }
				 else {
					 digitalWrite(TH1, LOW);
					 delayMicroseconds(dedtime);
					 digitalWrite(TL1, HIGH);
				 }
				 break;

			 case 1:
				 if (pos) {
					 digitalWrite(TL2, LOW);
					 delayMicroseconds(dedtime);
					 digitalWrite(TH2, HIGH);

				 }
				 else {
					 digitalWrite(TH2, LOW);
					 delayMicroseconds(dedtime);
					 digitalWrite(TL2, HIGH);
				 }
				 break;
			 case 2:

				 if (pos) {
					 digitalWrite(TL3, LOW);
					 delayMicroseconds(dedtime);
					 digitalWrite(TH3, HIGH);

				 }
				 else {
					 digitalWrite(TH3, LOW);
					 delayMicroseconds(dedtime);
					 digitalWrite(TL3, HIGH);
				 }
				 break;


			 case 3:
				 if (pos) {
					 digitalWrite(TL4, LOW);
					 delayMicroseconds(dedtime);
					 digitalWrite(TH4, HIGH);
				 }
				 else {
					 digitalWrite(TH4, LOW);
					 delayMicroseconds(dedtime);
					 digitalWrite(TL4, HIGH);
				 }
				 break;


			 }
		 }//if(on)
		 else {//выключаем
			
			 switch (nomer) {
			 case 0:

					 digitalWrite(TL1, LOW);
					 digitalWrite(TH1, LOW);

				 break;
			 case 1:

					 digitalWrite(TL2, LOW);
					 digitalWrite(TH2, LOW);

				 break;
			 case 2:

					 digitalWrite(TL3, LOW);
					 digitalWrite(TH3, LOW);
				
				 break;
			 case 3:
				
					 digitalWrite(TL4, LOW);
					 digitalWrite(TH4, LOW);
			
			 }
		 }//else
	 }

	 //включить/применить новые настройки -  аппаратный генератор сигналов(частота, канал, генерить высоким либо низким уровнем)
	 void UPgener() {
		 digitalKanal(0, true, apparat.pos);
		 digitalKanal(1, true, apparat.pos);
		 digitalKanal(2, true, apparat.pos);
		 digitalKanal(3, true, apparat.pos);
		 switch (apparat.chanel) {
		 
		 case 0:
			 if (apparat.pos) { tone(TH1, apparat.freq); }
             else { tone(TL1, apparat.freq); }
			 RS485.println("run gen");
			 break;
		 case 1:
			 if (apparat.pos) { tone(TH2, apparat.freq); }
			 else { tone(TL2, apparat.freq); }
			 break;
		 case 2:
			 if (apparat.pos) { tone(TH3, apparat.freq); }
			 else { tone(TL3, apparat.freq); }
			 break;
		 case 3:
			 if (apparat.pos) { tone(TH4, apparat.freq); }
			 else { tone(TL4, apparat.freq); }
			 break;
		 }
	 }
	 //выключить аппаратный генератор сигналов
	 void noGener() {
		 noTone(TH1);
		 noTone(TH2);
		 noTone(TH3);
		 noTone(TH4);
		 noTone(TL1);
		 noTone(TL2);
		 noTone(TL3);
		 noTone(TL4);
	 }
	void init();
};

extern PlataClass Plata;

#endif

