Hur kommer man igång med arduino?
Re: Hur kommer man igång med arduino?
Alla har olika sätt att lära, vissa tittar på en massa tutorials andra behöver kommunicera, personligen har jag en tendens att bli irriterad på tutorials. Och orkar inte bli idiot förklarad på EF så jag lär mig bäst när jag får try n error. Och i yttersta nödfall ställa en fråga på EF.
Till TS, kul att de börjat programmera, du kommer hitta massor av användningsområden du som innan inte hade en aning om att man behövde en µC för.
Kul är det iaf.
Till TS, kul att de börjat programmera, du kommer hitta massor av användningsområden du som innan inte hade en aning om att man behövde en µC för.
Kul är det iaf.
Re: Hur kommer man igång med arduino?
Kod: Markera allt
// include the library code:
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup()
{
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
}
void loop()
{
// set the cursor to (0,0):
lcd.setCursor(0, 0);
...
}
Varför skapas inte lcd i funktionen "setup"?
Är det för att lcd ska vara global?
Kan man skriva vad som helst för instruktioner
utanför "setup" och utanför (före/efter?) "loop"?
Re: Hur kommer man igång med arduino?
Om du tittade i mappen som jag hänvisade till tidigare hittar du main.cpp,
det är "huvudprogrammet" som körs när du gjort en "sketch".
Som du ser anropas setup() först och sedan körs loop() i "evighet".
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
Så kodrader du har skrivit någon annanstans,
som inte körs av dom två funktionerna kommer inte att köras alls.
det är "huvudprogrammet" som körs när du gjort en "sketch".
Som du ser anropas setup() först och sedan körs loop() i "evighet".
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
Så kodrader du har skrivit någon annanstans,
som inte körs av dom två funktionerna kommer inte att köras alls.
Kod: Markera allt
/*
main.cpp - Main loop for Arduino sketches
Copyright (c) 2005-2013 Arduino Team. All right reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <Arduino.h>
// Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (* /*func*/ )()) { return 0; }
// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }
void setupUSB() __attribute__((weak));
void setupUSB() { }
int main(void)
{
init();
initVariant();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hur kommer man igång med arduino?
Okej, men det förklarar ju inte
varför man gör vissa saker före "setup".
Jag har fått ett problem också:
Programmet startas inte när jag sätter i
usb-kabeln för att driva Arduinon.
Windows xp talar om med ljudeffekter
när jag kopplar in och ur den.
Utvecklingsmiljön säger "Board at COM3 is not available".
Det hjälper inte att trycka på nollställning.
Vad är det som är fel?
Tillägg:
Ibland fungerar det efter ett tag.
Tillägg 2:
Det verkar fungera om man har
serie-monitorn avstängd, kopplar in Arduinon
och kör igång serie-monitorn.
Ska det vara så?
varför man gör vissa saker före "setup".
Jag har fått ett problem också:
Programmet startas inte när jag sätter i
usb-kabeln för att driva Arduinon.
Windows xp talar om med ljudeffekter
när jag kopplar in och ur den.
Utvecklingsmiljön säger "Board at COM3 is not available".
Det hjälper inte att trycka på nollställning.
Vad är det som är fel?
Tillägg:
Ibland fungerar det efter ett tag.
Tillägg 2:
Det verkar fungera om man har
serie-monitorn avstängd, kopplar in Arduinon
och kör igång serie-monitorn.
Ska det vara så?
- Lennart Aspenryd
- Tidigare Lasp
- Inlägg: 12607
- Blev medlem: 1 juli 2011, 19:09:09
- Ort: Helsingborg
Re: Hur kommer man igång med arduino?
Under Kontrollpanelen Enhetshanteraren.
Där ser du direkt när du sätter i och ur USB kabeln vilken com port den får.
Kolla också att du har markerat ditt board rätt1
Där ser du direkt när du sätter i och ur USB kabeln vilken com port den får.
Kolla också att du har markerat ditt board rätt1
Re: Hur kommer man igång med arduino?
I enhetshanteraren blir den com3 varje gång,
men i utvecklingsmiljön finns den inte
förrän jag stänger av serie-monitorn och
kopplar in Arduinon.
Sen startas Arduinon när jag startar serie-monitorn.
men i utvecklingsmiljön finns den inte
förrän jag stänger av serie-monitorn och
kopplar in Arduinon.
Sen startas Arduinon när jag startar serie-monitorn.
Re: Hur kommer man igång med arduino?
Det blir likadant med Hyperterminal
som med serie-monitorn:
När jag lyfter på luren i Hyperterminal
så startas programmet i Arduinon
och börjar sända.
Programmet fortsätter att sända när jag lägger på,
och verkar starta om när jag lyfter på luren igen.
Kan det ha något med flödesreglering att göra?
Men då skulle väl programmet stanna när man
lägger på luren?
Det är samma med serie-monitorn:
När jag stänger av den så fortsätter Arduinon
att sända, och verkar startas om när jag
startar serie-monitorn igen.
När serie-monitorn har varit avstängd en stund
så stannar Arduinon. Antagligen på grund av
flödesregleringen och att någon buffert blir full.
som med serie-monitorn:
När jag lyfter på luren i Hyperterminal
så startas programmet i Arduinon
och börjar sända.
Programmet fortsätter att sända när jag lägger på,
och verkar starta om när jag lyfter på luren igen.
Kan det ha något med flödesreglering att göra?
Men då skulle väl programmet stanna när man
lägger på luren?
Det är samma med serie-monitorn:
När jag stänger av den så fortsätter Arduinon
att sända, och verkar startas om när jag
startar serie-monitorn igen.
När serie-monitorn har varit avstängd en stund
så stannar Arduinon. Antagligen på grund av
flödesregleringen och att någon buffert blir full.
Senast redigerad av BJ 2 november 2017, 15:59:28, redigerad totalt 2 gånger.
Re: Hur kommer man igång med arduino?
Som du är inne på är det för att variabeln "lcd" behöver vara global som den deklareras innan/utanför funktionerna i filen. Deklarationen måste göras innan variabeln används (alltså högre upp i filen). Hade du deklarerat den i setup() så hade den hamnat på stacken och gått ur "scope"/destruerats så fort setup() returnerar, och du hade fått ett kompilationsfel om du försökte använda den i loop() också.BJ skrev:Varför gör man så?
Varför skapas inte lcd i funktionen "setup"?
Är det för att lcd ska vara global?
Kan man skriva vad som helst för instruktioner
utanför "setup" och utanför (före/efter?) "loop"?
(Det finns även en annan lite mer subtil effekt av att initialisera lcd så som görs, nämligen att lcd-objektet blir statiskt allokerat, men det är nog lite överkurs för tillfället.)
Nej, du kan inte skriva vad för instruktioner som helst utanför funktionerna. I princip bara deklarera och initialisera globala variabler.
- SeniorLemuren
- Inlägg: 8071
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: Hur kommer man igång med arduino?
Lista gärna vilket program du laddat ner tlli Arduinon som börjar sända till terminalen?BJ skrev:När jag lyfter på luren i Hyperterminal
så startas programmet i Arduinon
och börjar sända.
Programmet fortsätter att sända när jag lägger på,
och verkar starta om när jag lyfter på luren igen.
Re: Hur kommer man igång med arduino?
Jag har ändrat lite på DigitalReadSerial:
Jag använder 9600 bps, och standard-formatet 8n1:
https://www.arduino.cc/en/Serial/Begin
Kod: Markera allt
/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the Serial Monitor
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/DigitalReadSerial
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton);
// print out the state of the button:
// Serial.println(buttonState);
Serial.println("+----------------------------+");
Serial.println("| (Text) |");
Serial.println("+----------------------------+");
delay(250); // delay in between reads for stability
}
https://www.arduino.cc/en/Serial/Begin
-
- Inlägg: 1404
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Hur kommer man igång med arduino?
Använd ett terminalprogram som inte pillar på DTR-linan om du inte vill att arduinon ska starta om.
Re: Hur kommer man igång med arduino?
Okej, var man hittar sådana är inte lätt att veta.
I så fall gör nog utvecklings-miljön det också,
och den måste jag ju nästan ha igång
när jag programmerar...
I så fall gör nog utvecklings-miljön det också,
och den måste jag ju nästan ha igång
när jag programmerar...
-
- Inlägg: 1404
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet