Здравствуйте! Занимаюсь разработкой электроники для квестов и хочу продемонстрировать работу одного из устройств. Сразу извиняюсь за качество видео. Смысл этого задания в том чтобы убраться на столе т.е положить в стакан определённое количество карандашей и откроется ящик.
Стакан стоит на весах http://ru.aliexpress.com/item/Digit...ing-Sensor-Load-Cell-3-12V-DC/1667069173.html Через АЦП подключен к ардуино и когда вес соответствует весу фломастеров срабатывает реле. Код прикреплю позже Если интересно могу более детально описать вечером.
А чего такие задержки большие? Весы ждут пока все "устаканится"? Весы по центру стоят? И если стакан сдвинется с места, когда карандаши бросят, что будет?
Программа - это пример из библиотеки чуть чуть измененный) Код (Text): #include "HX711.h" // HX711.DOUT - pin #A1 // HX711.PD_SCK - pin #A0 HX711 scale(A1, A0); // parameter "gain" is ommited; the default value 128 is used by the library void setup() { pinMode(13, OUTPUT); digitalWrite(13, LOW); Serial.begin(38400); Serial.println("HX711 Demo"); Serial.println("Before setting up the scale:"); Serial.print("read: \t\t"); Serial.println(scale.read()); // print a raw reading from the ADC Serial.print("read average: \t\t"); Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC Serial.print("get value: \t\t"); Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight (not set yet) Serial.print("get units: \t\t"); Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight (not set) divided // by the SCALE parameter (not set yet) scale.set_scale(2280.f); // this value is obtained by calibrating the scale with known weights; see the README for details scale.tare(); // reset the scale to 0 Serial.println("After setting up the scale:"); Serial.print("read: \t\t"); Serial.println(scale.read()); // print a raw reading from the ADC Serial.print("read average: \t\t"); Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC Serial.print("get value: \t\t"); Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight, set with tare() Serial.print("get units: \t\t"); Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight, divided // by the SCALE parameter set with set_scale Serial.println("Readings:"); } void loop() { Serial.print("one reading:\t"); Serial.print(scale.get_units(), 1); Serial.print("\t| average:\t"); Serial.println(scale.get_units(10)); scale.power_down(); // put the ADC in sleep mode delay(5000); scale.power_up(); if (scale.get_units(10) >= 8.2 && scale.get_units(10) <= 8.6) { digitalWrite(13, HIGH); } }