diff --git a/CMakeLists.txt b/CMakeLists.txt
index b10898124f920d10fd94507e294cbc5462fbee90..1d85efc89440a4645c83da049fcd709ef488a871 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -133,6 +133,7 @@ SET(SRC_LIST
         src/DCMotor.cpp
         src/ExternButton.cpp
         src/ServoMotor.cpp
+        src/adc.cpp
         ${LIBEZS_SOURCES}
         )
 
diff --git a/main.c b/main.c
index 03e90273d50f87c65b455eaf2678440928768145..f266252d72830853af2b28e8f130bdcf0dc7b2f2 100644
--- a/main.c
+++ b/main.c
@@ -25,14 +25,16 @@ extern uint32_t SystemCoreClock;
 
 
 void test_init() {
-
-    clock_setup();
-    adc_setup();
-
     ezs_printf("\n================================\n\n");
 
     ezs_printf("Start Init\n");
 
+    clock_setup();
+    ezs_printf("Clock loaded\n");
+
+    adc_setup();
+    ezs_printf("ADC loaded\n");
+
     uint8_t errno_gyro = BSP_GYRO_Init();
     if (errno_gyro != GYRO_OK) {
         ezs_printf("Gyro Error!\n");
@@ -56,6 +58,9 @@ void test_init() {
     dc_init();
     ezs_printf("DC loaded\n");
 
+    button_init();
+    ezs_printf("Extern Button loaded\n");
+
     ezs_printf("Finish Init\n");
     ezs_printf("\n================================\n\n");
 }
@@ -114,9 +119,22 @@ void get_degree() {
 void test_thread(cyg_addrword_t arg) {
     test_init();
 
-    button_init();
+    while (1) {
+        uint16_t input_adc = read_adc_naiive(11);
+        ezs_printf("ADC: %5d    ", input_adc);
+
+        if (input_adc < 500 || input_adc > 3500) {
+            ezs_printf("Speed: %3d\n", 0);
+            dc_set(0, 0);
+        }
+        else {
+            uint8_t speed = input_adc / 4096.0 * 125;
+            ezs_printf("Speed: %3d\n", speed);
+            dc_set(DC_LEFT, speed);
+        }
+    }
 
-    int i = 0;
+    /*int i = 0;
     while (!BSP_PB_GetState(BUTTON_KEY)) {
         for (i = 0; i < 255; i += 5) {
             ezs_printf("Iteration up: %d\n", i);
@@ -140,7 +158,7 @@ void test_thread(cyg_addrword_t arg) {
             uint16_t input_adc = read_adc_naiive(11);
             ezs_printf("adc: %d\n", input_adc);
         }
-    }
+    }*/
 }
 
 void cyg_user_start(void) {