Go Down

Topic: Best way to learn Arduino w/out any boards? (Read 92 times) previous topic - next topic

IrisDroidology

As the topic subject reads: are there ways for me to learn Arduino without having any boards atm? I have an Arduino esplora from school, but basically nothing else. Are there online simulators I can use to learn Arduino before buying more boards?

Robin2

#1
Aug 16, 2019, 10:45 am Last Edit: Aug 16, 2019, 10:46 am by Robin2
If you download the Arduino IDE you can write and compile programs without needing an Arduino board.

That will allow you to develop a program to the stage where there are no compiler errors, but of course it won't allow you to run the program.

IIRC I saw a YouTube link for an Arduino simulator in the last few days.

You can get an Uno or nano clone very cheaply. IMHO it would be much better than any simulator. Of course, if you can afford it please buy some genuine Arduinos to support the Arduino development.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

pert

Due to being fairly specific to a given usage, the Esplora is a little more limiting than the more general purpose boards like the Nano and Uno. However, but you can still do a ton of learning with that board alone. And if you are limited in resources and only interested in learning, rather than accomplishing some specific project, the Esplora is actually great because it comes with so much hardware built right in to the board. So as long as you have access to play with the Esplora as much as you like, I really see no reason to spend time messing with a simulator.

larryd

Until you get some hardware of your own, you can spend time reading the many links on the internet.


Arduino links of interest.

How to use this forum:
https://forum.arduino.cc/index.php?topic=149014.0  

Listing of downloadable 'Arduino PDFs' :
Either Google   >>>- - - - >       arduino filetype: pdf
Or
https://www.google.ca/search?q=arduino+filetype%3A+pdf&rlz=1C9BKJA_enCA739CA739&oq=arduino+filetype%3A+pdf&aqs=chrome..69i57j69i65.1385j0j7&hl=en-US&sourceid=chrome-mobile&ie=UTF-8

Listing of downloadable 'C++ PDFs' :
Either Google   >>>- - - - >       C++ filetype: pdf
Or
https://www.google.ca/search?q=c%2B%2B+filetype%3A+pdf&rlz=1C9BKJA_enCA739CA739&oq=c%2B%2B+filetype%3A+pdf&aqs=chrome..69i57.22790j0j7&hl=en-US&sourceid=chrome-mobile&ie=UTF-8

Arduino cheat sheet:
https://dlnmh9ip6v2uc.cloudfront.net/learn/materials/8/Arduino_Cheat_Sheet.pdf

Watch these:
Arduino programming syntax:
https://m.youtube.com/watch?v=CbJHL_P5RJ8  

Arduino arithmetic operators:
https://m.youtube.com/watch?v=UUx0_s-ElSs  

Arduino control flow:
https://m.youtube.com/watch?v=QpPGGuaGbCA

Arduino data types:
https://m.youtube.com/watch?v=xmZXWMEltEc  


Why MOSFET gate resistors:
https://youtu.be/o0OHGWCZ7B0    


Some things to read

Reading a schematic:
https://learn.sparkfun.com/tutorials/how-to-read-a-schematic

Language Reference:
https://www.arduino.cc/en/Reference/HomePage

Foundations:
https://www.arduino.cc/en/Tutorial/Foundations

How and Why to avoid delay():
http://playground.arduino.cc/Code/AvoidDelay

Demonstration code for several things at the same time.
http://forum.arduino.cc/index.php?topic=223286.0

Multitasking:
Part 1:
https://learn.adafruit.com/multi-tasking-the-arduino-part-1?view=all    

Part 2:
https://learn.adafruit.com/multi-tasking-the-arduino-part-2?view=all    

Part 3:
https://learn.adafruit.com/multi-tasking-the-arduino-part-3?view=all    

Micro Controllers:
https://learn.adafruit.com/mcus-how-do-they-work?view=all    

Useful links:
https://forum.arduino.cc/index.php?topic=384198.0

Arduino programming traps, tips and style guide:
http://www.gammon.com.au/forum/?id=12153

Call for useful programming discussions
https://forum.arduino.cc/index.php?topic=383980.0  

Jeremy Blume:
https://m.youtube.com/playlist?list=PLA567CE235D39FA84

Arduino products:
https://www.arduino.cc/en/Main/Products

Motors/MOSFETs
http://www.gammon.com.au/motors

Switches:
http://www.gammon.com.au/forum/?id=11955

https://www.amazon.ca/Arduino-Cookbook-Recipes-Enhance-Projects/dp/1449313876/ref=sr_1_1?ie=UTF8&qid=1522801721&sr=8-1&keywords=arduino+cookbook  



Share tips you have come across, 500+ posts:
https://forum.arduino.cc/index.php?topic=445951.0  

Images from above:
https://www.google.com/search?q=%E2%80%9CShare+tips+you+have%E2%80%9D+larryD+site:https://forum.arduino.cc&prmd=nmvi&source=lnms&tbm=isch&sa=X&ved=0ahUKEwiJw-zu68ncAhXPGTQIHWCDCNwQ_AUIFCgE&biw=1024&bih=653    

Debug discussion:
https://forum.arduino.cc/index.php?topic=215334.msg1575801#msg1575801    


Number 'type's.
- boolean (8 bit) - simple logical true/false, Arduino does not use single bits for bool
- byte (8 bit) - unsigned number from 0-255
- char (8 bit) - signed number from -128 to 127. The compiler will attempt to interpret this data type as a character in some circumstances, which may yield unexpected results
- unsigned char (8 bit) - same as 'byte'; if this is what you're after, you should use 'byte' instead, for reasons of clarity
- word (16 bit) - unsigned number from 0-65535
- unsigned int (16 bit)- the same as 'word'. Use 'word' instead for clarity and brevity
int (16 bit) - signed number from -32768 to 32767. This is most commonly what you see used for general purpose variables in Arduino example code provided with the IDE
- unsigned long (32 bit) - unsigned number from 0-4,294,967,295. The most common usage of this is to store the result of the millis() function, which returns the number of milliseconds the current code has been running
- long (32 bit) - signed number from -2,147,483,648 to 2,147,483,647
float (32 bit) - signed number from -3.4028235E38 to 3.4028235E38. Floating point on the Arduino is not native; the compiler has to jump through hoops to make it work. If you can avoid it, you should. We'll touch on this later.

You select the 'type' best suited for your variables.

ex:
- your variable does not change and it defines a pin on the Arduino.  const byte limitSwitchPin = 34;
- since an analog variable can be 0 to 1023, a byte will not do, you can select 'int'.    int temperature;
- if your variable needs to be within -64 to +64 a 'char' will do nicely.     char joystick;
- if your variable is used for ASCII then you need type 'char',  char myText[] = {"Raspberry Pie Smells"};
- if your variable enables some code then boolean can be used.   boolean enableFlag = false;
- millis() returns the time in ms since rebooting,   unsigned long currentTime = millis();
etc.









No technical PMs.
If you are asked a question, please respond with an answer.
If you are asked for more information, please supply it.
If you need clarification, ask for help.

Go Up