Vad betyder [] tecknet i programmet, arduino.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av Icecap »

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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av sodjan »

Pascal kan starta och sluta på valfria nummer, även negativa.
Även enumerated typer är OK.
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5973
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av orvar-e »

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.

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
}
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av sodjan »

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å.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46963
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av TomasL »

Eller MPLAb och PIC.
nifelheim
Den första
Inlägg: 2489
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av nifelheim »

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

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;
}

Borre
Inlägg: 4608
Blev medlem: 14 juni 2007, 15:43:50
Ort: Hälsingland

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av Borre »

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.

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);
  }
}
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5973
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av orvar-e »

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å.
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.
Och dessutom väldigt billiga på ebay.
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5973
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av orvar-e »

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.
Okej, slipper fippla med ännu ett hjälpmedel.

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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av sodjan »

> 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.
Användarvisningsbild
orvar-e
EF Sponsor
Inlägg: 5973
Blev medlem: 9 mars 2007, 09:01:32
Ort: Borlänge

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av orvar-e »

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
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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av sodjan »

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".
Mr Andersson
Inlägg: 1409
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av Mr Andersson »

> [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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av sodjan »

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?
Mr Andersson
Inlägg: 1409
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Vad betyder [] tecknet i programmet, arduino.

Inlägg av Mr Andersson »

> 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.
Skriv svar