Vad betyder [] tecknet i programmet, arduino.
Re: Vad betyder [] tecknet i programmet, arduino.
I Pascal väljer man om en array börjar med 1 eller 0! Det är inte fastställd någon default efter vad jag vet.
Re: Vad betyder [] tecknet i programmet, arduino.
Pascal kan starta och sluta på valfria nummer, även negativa.
Även enumerated typer är OK.
Även enumerated typer är OK.
Re: Vad betyder [] tecknet i programmet, arduino.
Jag är tacksam för alla svar, mycket lärorikt för mig.
Om vi tar ett exempel som alla arduino programmerare känner till, det första man får lära sig. Få en lysdiod att blinka.
Hur skulle samma funktion se ut med ren C programmering. Är den för enkel så kan vi ta en annan kod som är lätt att ladda upp och testa.
Kan man köra ren C kod i en arduino?
Lättare för mig att förstå om jag kan relatera till nått bekant.
Om vi tar ett exempel som alla arduino programmerare känner till, det första man får lära sig. Få en lysdiod att blinka.
Hur skulle samma funktion se ut med ren C programmering. Är den för enkel så kan vi ta en annan kod som är lätt att ladda upp och testa.
Kan man köra ren C kod i en arduino?
Lättare för mig att förstå om jag kan relatera till nått bekant.
Kod: Markera allt
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Re: Vad betyder [] tecknet i programmet, arduino.
Vad är "ren C programmering"?
Svaret är att det finns inget sådant. Man använder
nästan alltid olika inbyggda funktioner och bibliotek.
I ditt fall funktionerna pinMode(), digitalWrite() och delay().
> Kan man köra ren C kod i en arduino?
Det *är* C.
Tillsammans med en del bibliotek som då blir "Arduino".
> Lättare för mig att förstå om jag kan relatera till nått bekant.
Om du rent generellt vill lära dig grunderna i C, så är det kanske
bättre att inte göra det i Arduino miljön. Någon enkel C miljö
till en PC t.ex. Skriv några konsol-applikationer, då går det att
ligga på en relativt grundläggande C nivå.
Svaret är att det finns inget sådant. Man använder
nästan alltid olika inbyggda funktioner och bibliotek.
I ditt fall funktionerna pinMode(), digitalWrite() och delay().
> Kan man köra ren C kod i en arduino?
Det *är* C.
Tillsammans med en del bibliotek som då blir "Arduino".
> Lättare för mig att förstå om jag kan relatera till nått bekant.
Om du rent generellt vill lära dig grunderna i C, så är det kanske
bättre att inte göra det i Arduino miljön. Någon enkel C miljö
till en PC t.ex. Skriv några konsol-applikationer, då går det att
ligga på en relativt grundläggande C nivå.
Re: Vad betyder [] tecknet i programmet, arduino.
Någon annan har skrivit huvudprogrammet och en massa lib som du använder typ digitalWrite()
Om du kollar main.cpp nedan ser du att det först anropar setup()
och lite senare fastnar i en evighets for-sats som anropar loop().
I ditt "Arduinoprogram" skriver du "bara" dom två funktionerna.
Kolla i mappen motsv: "arduino-1.6.5-r5-windows\arduino-1.6.5-r5\hardware\arduino\avr\cores\arduino"
filen: wiring_digital.c
innehåller bland annat definitionen av digitalWrite()
skriven i C
Om du kollar main.cpp nedan ser du att det först anropar setup()
och lite senare fastnar i en evighets for-sats som anropar loop().
I ditt "Arduinoprogram" skriver du "bara" dom två funktionerna.
Kolla i mappen motsv: "arduino-1.6.5-r5-windows\arduino-1.6.5-r5\hardware\arduino\avr\cores\arduino"
filen: wiring_digital.c
innehåller bland annat definitionen av digitalWrite()
skriven i C
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() { }
int main(void)
{
init();
initVariant();
#if defined(USBCON)
USBDevice.attach();
#endif
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}
Re: Vad betyder [] tecknet i programmet, arduino.
Ja du kan skriva C direkt i Arduino, du är inte låst till Arduinos "funktioner".
Bara som ett exempel jag googlade fram lite snabbt, om det ger så mycket är en annan sak men det visar hur det kan göras på annat sätt.
Koden går att köra direkt i Arduino och motsvarar ditt exempel som blinkar lysdioden på (Arduino)pin 13.
Bara som ett exempel jag googlade fram lite snabbt, om det ger så mycket är en annan sak men det visar hur det kan göras på annat sätt.
Koden går att köra direkt i Arduino och motsvarar ditt exempel som blinkar lysdioden på (Arduino)pin 13.
Kod: Markera allt
#include <avr/io.h>
#include <util/delay.h>
int main (void)
{
DDRB |= _BV(DDB5); // set pin 5 of PORTB for output
while(1) {
PORTB |= _BV(PORTB5); // set pin 5 high to turn led on
_delay_ms(1000);
PORTB &= ~_BV(PORTB5); // set pin 5 low to turn led off
_delay_ms(1000);
}
}
Re: Vad betyder [] tecknet i programmet, arduino.
Kan jag använda arduino hårdvara till ex MPLAb? Menar så klart µC korten som det finns en uppsjö av varianter av, men som alla är lödfria och har allt som behövs för att fungera.sodjan skrev: Om du rent generellt vill lära dig grunderna i C, så är det kanske
bättre att inte göra det i Arduino miljön. Någon enkel C miljö
till en PC t.ex. Skriv några konsol-applikationer, då går det att
ligga på en relativt grundläggande C nivå.
Och dessutom väldigt billiga på ebay.
Re: Vad betyder [] tecknet i programmet, arduino.
Okej, slipper fippla med ännu ett hjälpmedel.Borre skrev:Ja du kan skriva C direkt i Arduino, du är inte låst till Arduinos "funktioner".
Bara som ett exempel jag googlade fram lite snabbt, om det ger så mycket är en annan sak men det visar hur det kan göras på annat sätt.
Koden går att köra direkt i Arduino och motsvarar ditt exempel som blinkar lysdioden på (Arduino)pin 13.
Det körde ihop sig på en gång för mig, laddade ner kodsnutten och det blinkar som det ska, men beskriv för mig varför Pin13 blinkar, hur gör jag om jag vill använda Pin12 ex
Är det #include <Arduino.h> som styr det? Som nifelheim skriver i sitt inlägg.
Re: Vad betyder [] tecknet i programmet, arduino.
> laddade ner kodsnutten
Vilken "kodsnutt"???
> men beskriv för mig varför Pin13 blinkar,
Om det är den första så är det "int led = 13;".
Om det är den andra så är det DDB5 och PORTB5.
> hur gör jag om jag vill använda Pin12 ex
Om det är den första så ändrar du till "int led = 12;".
Om det är den andra så får du kolla vilken AVR pinne som
motsvarar Arduino Pin12, kanske att det är pinne nr 4 i
PORTB, och då blir det är det DDB4 och PORTB4 istället.
Vilken "kodsnutt"???
> men beskriv för mig varför Pin13 blinkar,
Om det är den första så är det "int led = 13;".
Om det är den andra så är det DDB5 och PORTB5.
> hur gör jag om jag vill använda Pin12 ex
Om det är den första så ändrar du till "int led = 12;".
Om det är den andra så får du kolla vilken AVR pinne som
motsvarar Arduino Pin12, kanske att det är pinne nr 4 i
PORTB, och då blir det är det DDB4 och PORTB4 istället.
Re: Vad betyder [] tecknet i programmet, arduino.
Ursäkt otydligheten i mitt inlägg innan. Jag avsåg koden som Borre delade med sig av i sitt inlägg.
Jag kan inte se att det stod "int" nånting i Borres kod. Men jag känner väl till att man kan (finns fler sätt) skriva int xx = 13; om man avser arduino port 13.
Sodjan ....... Om det är den andra så får du kolla vilken AVR pinne som
motsvarar Arduino Pin12,
Svar på min fundering
Jag kan inte se att det stod "int" nånting i Borres kod. Men jag känner väl till att man kan (finns fler sätt) skriva int xx = 13; om man avser arduino port 13.
Sodjan ....... Om det är den andra så får du kolla vilken AVR pinne som
motsvarar Arduino Pin12,
Svar på min fundering
Arduino digital pins 0-7 goes to MCU port D.
Arduino digital pins 8-13 goes to MCU port B.
Arduino analog input pins 0-5 goes to MCU port C.
Re: Vad betyder [] tecknet i programmet, arduino.
Jag vet att det finns sidor som visar mappningen mellan
"AVR-pinnar" och "Arduino-pinnar", men jag orkade inte
leta efter den förrut, om man håller på med Arduino så
bör man känna till dom redan.
https://www.arduino.cc/en/Hacking/PinMapping
Sen så är det väl lite olika mappningar beroende på vilken
modell av Arduino man har, så man får kolla rätt sida...
> Jag kan inte se att det stod "int" nånting i Borres kod.
Nej, Borres exempel var "den andra" så där saknas det, så klart.
> ...int xx = 13; om man avser arduino port 13.
Enbart det i sig säger inget om någon port. Det sätter bara en
variabel till ett värde. Däremot senare när man använder samma
variabel i t.ex. PinMode() så får det betydelse. Men det går så klart
rent tekniskt lika bra att skriva pinMode(13, OUTPUT); direkt också.
Men det anses inte vara lika "snyggt".
"AVR-pinnar" och "Arduino-pinnar", men jag orkade inte
leta efter den förrut, om man håller på med Arduino så
bör man känna till dom redan.
https://www.arduino.cc/en/Hacking/PinMapping
Sen så är det väl lite olika mappningar beroende på vilken
modell av Arduino man har, så man får kolla rätt sida...
> Jag kan inte se att det stod "int" nånting i Borres kod.
Nej, Borres exempel var "den andra" så där saknas det, så klart.
> ...int xx = 13; om man avser arduino port 13.
Enbart det i sig säger inget om någon port. Det sätter bara en
variabel till ett värde. Däremot senare när man använder samma
variabel i t.ex. PinMode() så får det betydelse. Men det går så klart
rent tekniskt lika bra att skriva pinMode(13, OUTPUT); direkt också.
Men det anses inte vara lika "snyggt".
-
- Inlägg: 1409
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Vad betyder [] tecknet i programmet, arduino.
> [saker angående pin mappings] (till orvar-e. sodjan hann skriva ett inlägg just innan mig)
Notera att det bara stämmer för vissa arduinoversioner. T.ex. är arduino-pin 13 på port B7 på mega2560-versionen istället för på B5.
Det är absolut inget fel att direktaccessa portarna och skippa digitalRead/digitalWrite-funktionerna om du vill lära dig på lite lägre nivå närmare hårdvaran, men då är det viktigt att du förstår att koden inte kommer fungera på alla arduinos.
Notera att det bara stämmer för vissa arduinoversioner. T.ex. är arduino-pin 13 på port B7 på mega2560-versionen istället för på B5.
Det är absolut inget fel att direktaccessa portarna och skippa digitalRead/digitalWrite-funktionerna om du vill lära dig på lite lägre nivå närmare hårdvaran, men då är det viktigt att du förstår att koden inte kommer fungera på alla arduinos.
Re: Vad betyder [] tecknet i programmet, arduino.
Jaha !? Det var kanske därför jag skrev:
> Sen så är det väl lite olika mappningar beroende på vilken
> modell av Arduino man har, så man får kolla rätt sida...
Eller misstolkar jag dig?
> Sen så är det väl lite olika mappningar beroende på vilken
> modell av Arduino man har, så man får kolla rätt sida...
Eller misstolkar jag dig?
-
- Inlägg: 1409
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Vad betyder [] tecknet i programmet, arduino.
> Eller misstolkar jag dig?
Inte alls. Jag ber om ursäkt att det var väldigt otydligt att jag svarade på orvar-e's inlägg. Du hann posta ett nytt inlägg medans jag skrev mitt.
Inte alls. Jag ber om ursäkt att det var väldigt otydligt att jag svarade på orvar-e's inlägg. Du hann posta ett nytt inlägg medans jag skrev mitt.