 			distance		= 0.0;	// Расстояние
 
 byte		bat_percent		= 100,
-			system_state	= 0;
-
-#define SPEED_STATE			0
-#define AlARM_STATE			1
-#define MENU_STATE			2
-#define SLEEP_STATE			3
+			system_mode		= 0,
+			alarm_now		= false,
+			turn_signals;
+
+/*system_mode*/
+#define SPEED_MODE			0
+#define ALARM_MODE			1
+#define MENU_MODE			2
+#define SLEEP_MODE			3
+#define ENGINEERING_MODE	4
 
 sys_conf		btc_config; // Конфигурация системы
 
 void setup() {
+	#ifdef DEBUG
+	Serial.begin(9600);
+	#endif
+
+	pinMode(EXT_ALARM, OUTPUT);
+	digitalWrite(EXT_ALARM, HIGH);
+
 	pinMode(DISPLAY_LIGHT, OUTPUT);		// Подключение подсветки экрана
-
-	for (byte	i	= 0; i < 255; i++, delay(8), analogWrite(DISPLAY_LIGHT, i));
 
 	lcd.begin();
 	lcd.print("Loading system...");
 	lcd.setCursor(0, 1);
 	lcd.print("Version: ");
 	lcd.print(VERSION);
+
+	for (byte	i	= 0; i < 255; i++, delay(8), analogWrite(DISPLAY_LIGHT, i));
+
 
 	/*Инициализация цифровых выводов*/
 	pinMode(BIP, OUTPUT);

	pinMode(RED_BACK_LIGHT, OUTPUT);
	pinMode(DISPLAY_LIGHT, OUTPUT);
	pinMode(DATA_PIN, OUTPUT);
	pinMode(CLOCK_PIN, OUTPUT);	
	pinMode(EXT_ALARM, OUTPUT);

	setSyncProvider(RTC.get);			// Для времени


#include <DS1307RTC.h>
#include <LiquidCrystal_I2C.h>

// #define FIRST_LOADING
// #define DEBUG

#define set_bit(m,b)	((m) |= (b))
#define unset_bit(m,b)	((m) &= ~(b))
#define bit_seted(m,b)	((b) == ((m) & (b)))

#define byte_to_analog(x)	((int)(4.015 * x))
#define analog_to_byte(x)	((byte)(0.248 * x))

LiquidCrystal_I2C lcd(0x27,16,2); // Инициализация дисплея (адрес, количество символов, количество строк)

#define VERSION "1.0(b)"

static byte	bat_icon[8] = {
	B01110,
