СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №4/2016
РОБОТОТЕХНИКА 13 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 4 2016 чисел в каждомиспытании проверяется на попадание в круг единичного радиу- са с центром в начале координат, то есть x 2 + y 2 ≤ 1. Таким образом, фактически рассчитывается площадь круга, которая, как известно, выражается через искомое число π . Программа расчёта числа π лег- ко переносится на любые платыArduino с разнымимикроконтроллерами, так как в ней использованы только стандартные библиотечные функции. В листинге приведён программ- ный код оценки производительности. Программа одинакова для всех плат, и после компиляции загружается в тести- руемые платы. Результат работы про- граммы выводится на двухстрочный жидкокристаллический дисплей. Для измерения времени расчёта π в милли- секундах используется функция millis(). Р ЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ ПЛАТ A RDUINO Рассмотрим оценку производитель- ностиследующихчетырёхплат Arduino с разнымимикроконтроллерами, исполь- зуя одну и ту же программу расчёта π : 1. Плата Arduino Uno (см. рис. 1) c 8-раз- рядным AVR-микроконтроллером ATmega328 с RISC-архитектурой, который имеет 14 цифровых входов/ выходов (6 из которых могут быть использованы как выходы дляширот- но-импульсноймодуляции), 6 анало- говых входов, кварц на 16 МГц, USB- интерфейс, разъём питания и кноп- ку сброса. 2. Плата Arduino Leonardo (см. рис. 2) c 8-разрядным AVR-микроконт- роллером ATmega32u4 с RISC-архи- тектурой, который имеет 20 цифро- вых входов/выходов (7 из которых могут быть использованы как выхо- ды ШИМ), 12 аналоговых входов, кварц на 16 МГц, USB-интерфейс, разъём питания и кнопку сброса. 3. Плата ArduinoMega (см. рис. 3) c 8-раз- рядным AVR-микроконтроллером ATmega2560 с RISC-архитектурой, которыйимеет 54 цифровых входов/ выходов (15 из которых могут быть использованыкак выходыдляширот- но-импульсноймодуляции), 16 анало- говых входов, кварц на 16 МГц, USB- интерфейс, разъём питания и кноп- ку сброса. 4. Плата Arduino Due (см. рис. 4) c ARM- микроконтроллером SAM3X8E Cor- tex-M3, который имеет 54 цифро- вых входов/выходов (12 из которых могут быть использованы как выхо- ды для широтно-импульсной модуля- Листинг #include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 4, 5, 6, 7); void setup() { lcd.begin(16, 2); lcd.setCursor(0,0); lcd.print(«N=»); // N-число испытаний double r = 0.27; // начальное значение датчика случайных чисел lcd.setCursor(0,1); lcd.print(«PI=»); } void loop() { int i,N=10000; lcd.setCursor(8,0); lcd.print(N); double x,y,S, r; unsigned long time1,time2, time; do { S=0; time1=millis(); for(i=0;i<N ;i++) { r=random(0,100); x=2*r/100-1; r=random(0,100); y=2*r/100-1; if ((x * x + y * y) <= 1) S++; } time2=millis(); S=4*S/N; //расчёт числа PI lcd.setCursor(3,1); lcd.print (S); // вывод на дисплей числа PI lcd.setCursor(8,1); time=time2-time1; // затраченное время – оценка производительности lcd.print (time); // вывод производительности на дисплей } while (i=N); } Рис. 1. Плата Arduino Uno Рис. 2. Плата Arduino Leonardo Рис. 3. Плата Arduino Mega Рис. 4. Плата Arduino Due
RkJQdWJsaXNoZXIy MTQ4NjUy