Jak Mogę przetestować kod Arduino?

Chciałbym móc przetestować mój kod Arduino. Idealnie, byłbym w stanie uruchomić wszelkie testy bez konieczności przesyłania kodu do Arduino. Jakie narzędzia lub biblioteki mogą mi w tym pomóc?

Istnieje emulator Arduino w rozwoju , który może być przydatny, ale nie wydaje się być jeszcze gotowy do użycia.

AVR Studio od Atmel zawiera symulator chipów, który może się przydać, ale nie widzę, jak bym go używał w połączeniu z Arduino IDE.

Author: Peter Mortensen, 2009-04-23

18 answers

Nie uruchamiaj testów jednostkowych na urządzeniu Arduino lub emulatorze

Sprawa przeciwko testom urządzeń mikrokontrolerów / emulatorów / opartych na Sim

Celem testów jednostkowych jest sprawdzenie jakości własnego kodu. Testy jednostkowe nie powinnynigdy sprawdzać funkcjonalności czynników poza Twoją kontrolą.

Pomyśl o tym w ten sposób: nawet jeśli testowałeś funkcjonalność biblioteki Arduino, sprzętu mikrokontrolera lub emulatora, jest to absolutnie niemożliwe]} dla takich wyników badań, aby powiedzieć coś o jakości własnej pracy. Dlatego nie ma absolutnie żadnej wartości w pisaniu testów jednostkowych, które w ogóle działają na urządzeniu (lub emulatorze).

Niezależnie od tego, czy rozważasz uruchomienie testów na urządzeniu, czy emulatorze, nadal zmuszasz się do powtarzania brutalnie powolnego procesu:

  1. Tweak your code
  2. skompilować i przesłać do urządzenia Arduino
  3. obserwować zachowanie i zgadywać o tym, czy to działa.
  4. powtórz

Krok 3 jest szczególnie nieprzyjemny, jeśli spodziewasz się otrzymywać komunikaty diagnostyczne przez port szeregowy, ale sam projekt musi korzystać z jedynego sprzętowego portu szeregowego Arduino. Jeśli myślałeś, że Biblioteka SoftwareSerial może pomóc, powinieneś wiedzieć, że może to zakłócić wszelkie funkcje wymagające dokładnego pomiaru czasu, takie jak generowanie innych sygnałów w tym samym czasie. Ten właśnie problem przytrafił się ja.

Ponownie, jeśli miałeś przetestować swój szkic za pomocą emulatora i twoje procedury krytyczne czasowo przebiegały idealnie, dopóki nie przesłałeś do rzeczywistego Arduino, wtedy jedyną lekcją, której się nauczysz, jest to, że emulator jest wadliwy-a wiedząc o tym, wciąż nie ujawnia {35]} nic {36]} o jakości twojej własnej pracy!

Jeśli głupio jest testować na urządzeniu lub emulatorze, to co powinno ZROBIĆ?

Prawdopodobnie używasz komputera do pracy nad projektem Arduino. Że komputer jest dosłownie tysiące razy szybszy niż mikrokontroler. Napisz testy do zbudowania i uruchom na swoim komputerze .

Pamiętaj, zachowanie biblioteki Arduino i mikrokontrolera powinno być przyjęte jako poprawne lub co najmniej konsekwentnie niepoprawne.

Kiedy twoje testy dają wynik niezgodny z Twoimi oczekiwaniami, prawdopodobnie masz wadę w swoim kodzie, który został przetestowany. Jeśli wynik testu pasuje do twojego oczekiwania, ale program nie zachowuje się poprawnie po przesłaniu go do Arduino, wtedy wiesz, że twoje testy były oparte na błędnych założeniach i prawdopodobnie masz wadliwy test. W obu przypadkach otrzymasz prawdziwy wgląd w to, jakie powinny być następne zmiany w kodzie.

Jak budować i uruchamiać testy na komputerze

Pierwszą rzeczą, którą musisz zrobić, to określić swoje cele testowe . Zastanów się, jakie części własnego kodu chcesz przetestować a potem upewnij się, że skonstruujesz swój program w taki sposób, że możesz wyizolować dyskretne części do testowania.

Jeśli części, które chcesz przetestować, wywołują jakiekolwiek funkcje Arduino, będziesz musiał zapewnić zamienniki makiety w swoim programie testowym. To znacznie mniej pracy niż się wydaje. Twoje makiety nie muszą właściwie nic robić, ale zapewniać przewidywalne dane wejściowe i wyjściowe dla testów.

Każdy Twój własny kod, który zamierzasz przetestować, musi istnieć w plikach źródłowych inne niż .szkic pde. Nie martw się, twój szkic będzie kompilowany nawet z kodem źródłowym poza szkicem. Kiedy naprawdę przejdziesz do tego, niewiele więcej niż normalny punkt wejścia programu powinien być zdefiniowany w pliku szkicu.

Pozostaje tylko napisać testy, a następnie skompilować je przy użyciu ulubionego kompilatora C++! Jest to prawdopodobnie najlepiej zilustrowane z prawdziwego świata przykład.

Rzeczywisty przykład pracy

Jeden z moich projektów domowych znalazł tutaj ma kilka prostych testów, które działają na komputerze. Dla tego składania odpowiedzi, po prostu przejdę do tego, jak wyśmiewałem niektóre funkcje biblioteki Arduino i testy, które napisałem, aby przetestować te makiety. Nie jest to sprzeczne z tym, co powiedziałem wcześniej o nie testowaniu kodu innych ludzi, ponieważ to ja napisałem makiety. Chciałem mieć pewność, że moje makiety są poprawne.

Źródło mock_arduino.cpp, który zawiera kod duplikujący niektóre funkcje obsługi w 2007 roku został wybrany do Izby Gmin.]}

#include <sys/timeb.h>
#include "mock_arduino.h"

timeb t_start;
unsigned long millis() {
  timeb t_now;
  ftime(&t_now);
  return (t_now.time  - t_start.time) * 1000 + (t_now.millitm - t_start.millitm);
}

void delay( unsigned long ms ) {
  unsigned long start = millis();
  while(millis() - start < ms){}
}

void initialize_mock_arduino() {
  ftime(&t_start);
}

Używam poniższej makiety, aby uzyskać czytelne wyjście, gdy mój kod zapisuje dane binarne do sprzętowego urządzenia szeregowego.

Fake_serial.h

#include <iostream>

class FakeSerial {
public:
  void begin(unsigned long);
  void end();
  size_t write(const unsigned char*, size_t);
};

extern FakeSerial Serial;

Fake_serial.cpp

#include <cstring>
#include <iostream>
#include <iomanip>

#include "fake_serial.h"

void FakeSerial::begin(unsigned long speed) {
  return;
}

void FakeSerial::end() {
  return;
}

size_t FakeSerial::write( const unsigned char buf[], size_t size ) {
  using namespace std;
  ios_base::fmtflags oldFlags = cout.flags();
  streamsize oldPrec = cout.precision();
  char oldFill = cout.fill();

  cout << "Serial::write: ";
  cout << internal << setfill('0');

  for( unsigned int i = 0; i < size; i++ ){
    cout << setw(2) << hex << (unsigned int)buf[i] << " ";
  }
  cout << endl;

  cout.flags(oldFlags);
  cout.precision(oldPrec);
  cout.fill(oldFill);

  return size;
}

FakeSerial Serial;

I wreszcie, rzeczywisty program testowy:

#include "mock_arduino.h"

using namespace std;

void millis_test() {
  unsigned long start = millis();
  cout << "millis() test start: " << start << endl;
  while( millis() - start < 10000 ) {
    cout << millis() << endl;
    sleep(1);
  }
  unsigned long end = millis();
  cout << "End of test - duration: " << end - start << "ms" << endl;
}

void delay_test() {
  unsigned long start = millis();
  cout << "delay() test start: " << start << endl;
  while( millis() - start < 10000 ) {
    cout << millis() << endl;
    delay(250);
  }
  unsigned long end = millis();
  cout << "End of test - duration: " << end - start << "ms" << endl;
}

void run_tests() {
  millis_test();
  delay_test();
}

int main(int argc, char **argv){
  initialize_mock_arduino();
  run_tests();
}

Ten post jest wystarczająco długi, więc zapoznaj się z moim projektem na Githubie , aby zobaczyć więcej przypadków testowych w akcji. Moje prace są w toku w innych gałęziach niż master, więc sprawdź te gałęzie do dodatkowych badań.

Zdecydowałem się napisać własne lekkie procedury testowe, ale dostępne są również bardziej wytrzymałe frameworki testów jednostkowych, takie jak CppUnit.

 103
Author: Iron Savior,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-31 14:50:10

W przypadku braku wcześniej istniejących ram testów jednostkowych dla Arduino, stworzyłem ArduinoUnit . Oto prosty szkic Arduino demonstrujący jego użycie:

#include <ArduinoUnit.h>

// Create test suite
TestSuite suite;

void setup() {
    Serial.begin(9600);    
}

// Create a test called 'addition' in the test suite
test(addition) {
    assertEquals(3, 1 + 2);
}

void loop() {
    // Run test suite, printing results to the serial port
    suite.run();
}
 58
Author: Matthew Murdoch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-25 10:03:25

Odniosłem znaczny sukces testując mój kod PIC, pobierając dostęp do sprzętu i wyśmiewając go w testach.

Na przykład, i abstract PORTA z

#define SetPortA(v) {PORTA = v;}

Wtedy SetPortA może być łatwo wyśmiany, bez dodawania kodu w wersji PIC.

Po przetestowaniu abstrakcji sprzętowej szybko stwierdzam, że ogólnie kod przechodzi z platformy testowej do PIC i działa za pierwszym razem.

Update:

Używam # include seam dla kod jednostki, # w tym kod jednostki w pliku C++ dla platformy testowej i plik C dla kodu docelowego.

Jako przykład chcę multipleksować cztery wyświetlacze 7-segmentowe, jeden port sterujący segmentami, a drugi wybierający wyświetlacz. Kod wyświetlacza łączy się z wyświetlaczami poprzez SetSegmentData(char) i SetDisplay(char). Mogę wyśmiewać je w moim c++ test rig i sprawdzić, czy dostaję dane, których oczekuję. Dla celu używam #define, Aby uzyskać bezpośrednie przypisanie bez narzutu wywołania funkcji

#define SetSegmentData(x) {PORTA = x;}
 21
Author: David Sykes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-08 02:27:12

Wygląda na to, że emulino zrobiłby to doskonale.

Emulino to emulator dla platformy Arduino autorstwa Grega Hewgilla. (Source )

Repozytorium GitHub

 15
Author: Gonzo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-07 17:18:58

Simavr jest symulatorem AVR używającym avr-gcc.

Obsługuje już kilka mikrokontrolerów ATTiny i ATMega, a - według autora - łatwo dodać kilka kolejnych.

W przykładach znajduje się simduino, emulator Arduino. Obsługuje uruchamianie bootloadera Arduino i może być zaprogramowany za pomocą avrdude przez Socat (zmodyfikowany Netcat).

 11
Author: Gonzo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-15 18:55:30

Możesz testować jednostkowo w Pythonie za pomocą mojego projektu, PySimAVR . Arsconsjest używany do budowania i simavr do symulacji.

Przykład:

from pysimavr.sim import ArduinoSim    
def test_atmega88():
    mcu = 'atmega88'
    snippet = 'Serial.print("hello");'

    output = ArduinoSim(snippet=snippet, mcu=mcu, timespan=0.01).get_serial()
    assert output == 'hello'

Początek testu:

$ nosetests pysimavr/examples/test_example.py
pysimavr.examples.test_example.test_atmega88 ... ok
 7
Author: ponty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-25 14:19:26

Nie znam żadnej platformy, która może testować kod Arduino.

Jest jednak Fritzing platforma, której możesz użyć do modelowania sprzętu, a później eksportowania diagramów PCB i innych rzeczy.

Warto sprawdzić.

 6
Author: Yuval Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-23 09:14:27

Używamy płyt Arduino do akwizycji danych w dużym eksperymencie naukowym. Następnie musimy obsługiwać kilka płyt Arduino z różnymi implementacjami. Napisałem narzędzia Pythona do dynamicznego ładowania obrazów Arduino hex podczas testów jednostkowych. Kod znajdujący się w poniższym linku obsługuje systemy Windows i Mac OS X poprzez plik konfiguracyjny. Aby dowiedzieć się, gdzie obrazy szesnastkowe są umieszczone przez Arduino IDE, naciśnij klawisz shift, zanim naciśniesz przycisk budowania (odtwarzania). Naciśnij klawisz shift podczas naciśnięcie upload, aby dowiedzieć się, gdzie znajduje się avrdude (narzędzie do przesyłania wiersza poleceń) w systemie / wersji Arduino. Alternatywnie możesz spojrzeć na Dołączone pliki konfiguracyjne i użyć lokalizacji instalacji (obecnie na Arduino 0020).

Http://github.com/toddstavish/Python-Arduino-Unit-Testing

 6
Author: toddstavish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-08 02:23:18

Ten program pozwala na automatyczne uruchamianie kilku testów jednostkowych Arduino. Proces testowania rozpoczyna się na komputerze, ale testy są uruchamiane na rzeczywistym sprzęcie Arduino. Jeden zestaw testów jednostkowych jest zwykle używany do testowania jednej biblioteki Arduino. (this

Arduino Forum: http://arduino.cc/forum/index.php?topic=140027.0

Strona projektu GitHub: http://jeroendoggen.github.com/Arduino-TestSuite

Strona w indeksie pakietów Pythona: http://pypi.python.org/pypi/arduino_testsuite

Testy jednostkowe są pisane z "Arduino Unit Testing Library": http://code.google.com/p/arduinounit

Dla każdego zestawu testów jednostkowych wykonuje się następujące czynności:

  • przeczytaj plik konfiguracyjny, aby dowiedzieć się, które testy uruchomić
  • skrypt kompiluje i przesyła szkic Arduino zawierający kod do testów jednostkowych.
  • testy jednostkowe są przeprowadzane na Arduino Zarząd.
  • wyniki testu są drukowane na porcie szeregowym i analizowane przez skrypt Pythona.
  • skrypt rozpoczyna następny test, powtarzając powyższe kroki dla wszystkich testów, które są wymagane w pliku konfiguracyjnym.
  • skrypt wyświetla podsumowanie pokazujące przegląd wszystkich nieudanych / zdanych testów w kompletnej witrynie testsuite.
 6
Author: jeroendoggen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-11 12:59:39

Używam Searduino podczas pisania kodu Arduino. Searduino to symulator Arduino i środowisko programistyczne (Makefiles, kod C...) to ułatwia włamanie w C / C++ za pomocą ulubionego edytora. Możesz importować szkice Arduino i uruchamiać je w symulatorze.

Zrzut ekranu Searduino 0.8: http://searduino.files.wordpress.com/2014/01/jearduino-0-8.png

Searduino 0.9 zostanie wydany, a film zostanie nagrany zaraz po zakończeniu testów załatwione .... za dzień lub dwa.

Testy na symulatorze nie należy traktować jako prawdziwe testy, ale na pewno bardzo mi pomogły w znalezieniu głupich / logicznych błędów (zapomnienie o zrobieniu pinMode(xx, OUTPUT) itp.).

BTW: jestem jednym z ludzi rozwijających Searduino.

 5
Author: user3183814,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-07 17:20:13

Trzymaj kod specyficzny dla sprzętu oddzielnie lub abstrakcyjnie od reszty, dzięki czemu możesz testować i debugować Ten większy "odpoczynek" na każdej platformie, dla której masz dobre narzędzia i z którą jesteś najbardziej znany.

Zasadniczo staraj się zbudować jak najwięcej kodu finalnego z jak największej liczby znanych do pracy bloków konstrukcyjnych. Pozostała praca specyficzna dla sprzętu będzie wtedy znacznie łatwiejsza i szybsza. Możesz go zakończyć używając istniejących emulatorów i / lub urządzeń emulujących na własną rękę. A potem z oczywiście, musisz jakoś przetestować prawdziwą rzecz. W zależności od okoliczności, które mogą lub nie mogą być zbyt dobrze zautomatyzowane (tj. kto lub co będzie naciskać przyciski i dostarczać inne dane wejściowe? kto lub co będzie obserwować i interpretować różne wskaźniki i wyniki?).

 4
Author: Alexey Frunze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-24 12:14:42

James W. Grenning pisze świetne książki, a ta jest o testowaniu jednostkowym wbudowanego kodu C Test Driven Development for Embedded C.

 3
Author: Rafael Vega,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-25 14:17:58

Istnieje projekt o nazwie ncore , który dostarcza rdzeń natywny dla Arduino. I pozwala pisać testy dla kodu Arduino.

Z opisu projektu

Rdzeń natywny pozwala kompilować i uruchamiać szkice Arduino na PC, generalnie bez modyfikacji. Zapewnia natywne wersje standardowe funkcje Arduino, oraz interpreter wiersza poleceń, który daje dane wejściowe do szkicu, które normalnie pochodzą ze sprzętu siebie.

Również w sekcji "czego potrzebuję, aby z niej korzystać"

Jeśli chcesz zbudować testy, będziesz potrzebował cxxtest z http://cxxtest.tigris.org . NCORE został przetestowany z cxxtest 3.10.1.

 3
Author: Sudar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-11 11:37:27

Jeśli chcesz przetestować kod poza MCU (na komputerze), sprawdź libcheck: https://libcheck.github.io/check/

Użyłem go do przetestowania własnego osadzonego kodu kilka razy. To dość solidne ramy.

 2
Author: ezaquarii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-19 18:10:35

Mam przyjemność ogłosić (co wydaje się być) pierwsze stabilne wydanie klejnotu ruby o nazwie arduino_ci które zbudowałem w tym celu. Chociaż ogranicza się do testowania bibliotek Arduino (a nie samodzielnych szkiców), umożliwia uruchamianie testów jednostkowych na Travis CI.

Zakładając, że masz zainstalowane Ruby i rubygems, dodanie tego CI do biblioteki jest proste. Wyobraźmy sobie bardzo prostą bibliotekę w katalogu biblioteki Arduino o nazwie DoSomething. Zawiera nagłówek plik, a ta implementacja:

#include <Arduino.h>
#include "do-something.h"

int doSomething(void) {
  return 4;
};

Przetestujmy to za pomocą arduino_ci. Najpierw musisz dodać Gemfile do katalogu bazowego biblioteki o następującej treści:

source 'https://rubygems.org'
gem 'arduino_ci', '~> 0.1.7'

Następnie uruchom bundle install.

Następnie utwórz katalog o nazwie test/. (Każdy plik .cpp zostanie uznany za osobny zestaw testów). Na razie stworzymy jeden test, w test/is_four.cpp:

#include <ArduinoUnitTests.h>
#include "../do-something.h"

unittest(library_does_something)
{
  assertEqual(4, doSomething());
}

unittest_main()  // this is a macro for main().  just go with it.
To wszystko. Jeśli assertEqual składnia i struktura testu wyglądają znajomo, to dlatego, że w 2004 roku został przyjęty do biblioteki Arduinounit w Arduinounit.]} do którego odniósł się w swojej odpowiedzi .

Teraz jesteś gotowy do uruchomienia bundle exec arduino_ci_remote.rb, które przeprowadzi te testy. Może dać wyjście coś takiego:

$ bundle exec arduino_ci_remote.rb
Installing library under test...                                               ✓
Library installed at /Users/XXXXX/Documents/Arduino/libraries/DoSomething...   ✓
Checking GCC version...
    Using built-in specs.
    COLLECT_GCC=g++-4.9
    COLLECT_LTO_WRAPPER=/usr/local/Cellar/[email protected]/4.9.4_1/libexec/gcc/x86_64-apple-darwin16.    7.0/4.9.4/lto-wrapper
    Target: x86_64-apple-darwin16.7.0
    Configured with: ../configure --build=x86_64-apple-darwin16.7.0     --prefix=/usr/local/Cellar/[email protected]/4.9.4_1     --libdir=/usr/local/Cellar/[email protected]/4.9.4_1/lib/gcc/4.9 --enable-languages=c,c++,objc,    obj-c++,fortran --program-suffix=-4.9 --with-system-zlib --enable-libstdcxx-time=yes     --enable-stage1-checking --enable-checking=release --enable-lto --enable-plugin     --with-build-config=bootstrap-debug --disable-werror --with-pkgversion='Homebrew GCC     4.9.4_1' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues     MAKEINFO=missing --disable-nls --enable-multilib
    Thread model: posix
    gcc version 4.9.4 (Homebrew GCC 4.9.4_1)
...Checking GCC version                                                        ✓
Installing board package arduino:sam...                                        ✓
Unit testing is_four.cpp...

TAP version 13
1..1
# Subtest: library_does_something
    ok 1 - assertEqual 4 == doSomething()
    1..1
ok 1 - library_does_something
...Unit testing is_four.cpp                                                    ✓
Failures: 0

Uruchamianie tego samego kodu jako część zadania CI na Travis CI (np. tak, że można go uruchomić z żądań Pull GitHub) jest również proste. Wystarczy dodać to do pliku .travis.yml:

language: ruby
script:
   - bundle install
   - bundle exec arduino_ci_remote.rb
Oczywiście, jest o wiele więcej mocy. i elastyczność do tej biblioteki CI niż ja się tutaj. Oto kilka innych przykładów:
    Arduino_ci jest biblioteką przykładową, używaną do testowania samego arduino_ci.]} Na przykład, testowanie implementacji kolejki W przeciwieństwie do innych bibliotek, które nie są w pełni kompatybilne z urządzeniami mobilnymi, nie są w stanie obsługiwać urządzeń mobilnych.]}
 2
Author: Ian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-23 12:17:44

Możesz użyć emulare - możesz przeciągnąć i upuścić mikrokontroler na diagramie i uruchomić swój kod w Eclipse. Dokumentacja na stronie internetowej mówi, jak ją skonfigurować.

 1
Author: Imre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-20 09:09:30

Użyj Proteus VSM z biblioteką Arduino do debugowania kodu lub testowania go.

Jest to najlepsza praktyka przed wprowadzeniem kodu na pokład, ale upewnij się, z timings, ponieważ symulacja nie działa w czasie rzeczywistym, jak działają na pokładzie.

 1
Author: sathish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-07 17:16:57

Wypróbuj Autodesk circuit simulator. Pozwala na testowanie kodu Arduino i obwodów z wieloma innymi komponentami sprzętowymi.

 1
Author: Sidhant Goyal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-07 17:18:00