Данная программа управляет экспериментальной установкой, упоминаемой в статье Исследование локального заката, единственной функцией которой является ежеминутное считывание и запись данных, полученных с датчика освещенности. В результате работы этой установки можно получить, например, суточное изменение освещенности на улице или в помещении.
Программа полностью автономна и работает на блоке без подключения к компьютеру. Вам нужно только разместить скомпилированный файл в памяти блока и запустить его, используя экран и кнопки блока. Имя файла данных указывается на экране вместе с текущим измеренным значением и оставшимся процентом заряда аккумулятора.
Программа самостоятельно определяет, к какому порту блока подключен нужный датчик. В случае отсутствия подключения, выдаётся сообщение и работа завершается.
Данные ежеминутно записываются в файл формата CSV, который легко открывается в MS Excel для просмотра значений или для построения графиков. Программа написана так, чтобы большую часть времени файл данных было свободен: его можно скопировать на компьютер в любой момент без остановки работы программы.
Вы можете скопировать указанный ниже код программы в IDE MS Small Basic, подключить блок EV3 и запустить. Программа разработана для автономной работы блока — без подключения к компьютеру. Сама программа и итоговый файл данных (в данном случае) должны располагаться на Flash карте SD, установленной в блок EV3. Вы можете изменить путь записи файла, тем самым позволив программе работать непосредственно во встроенной памяти блока.
EV3.SetLEDColor("OFF", "NORMAL") ' отключить подсветку
Port = 0
For i = 1 To 4 ' найти датчик по портам: цикл от 1 до 4
If Sensor.GetType(i) = 29 Then ' 29 - код цветосветового датчика
Port = i
EndIf
EndFor
If Port = 0 Then ' если не нашли датчик, начать мигать красным, пищать, и вывести на экран "датчик не обнаружен"
EV3.SetLEDColor("RED", "PULSE") ' включить подсветку
Speaker.Note(100,"B7",1000) ' Пищим
LCD.Clear()
LCD.Text(1, 10, 60, 1, "SENSOR NOT FOUND!!!") ' Выводим
Program.Delay(3000)
Program.End() ' завершаем работу
EndIf
Sensor.SetMode(Port, 1) ' инициализируем дачик
ffname = "l_" + Math.GetRandomNumber(100000) + ".csv" ' файл со случайным числом в имени - для нового эксперимента
fname = "SD_Card/Light/" + ffname ' полный путь
While "True"' цикл бесконечный
data = Sensor.ReadPercent(Port)
LCD.Clear()' экран почистить
LCD.Text(1,1,50,1,"FileName: " + ffname)' выводим имя файла
LCD.Text(1,1,70,1,"Light: " + data + "%")' вывести на экран данные
LCD.Text(1,1,90,1,"Bat: " + EV3.BatteryLevel + "%")' вывести на экран
fiden = EV3File.OpenAppend(fname) ' открыть файл
EV3File.WriteLine(fiden, Math.Floor(EV3.Time/60000) + ";" + data)' записать
EV3File.Close(fiden)' закрыть файл
Program.Delay(60000)' пауза - 1 минута
EndWhile ' конец цикла
Поделиться: