Vinnaren i pepparkakshustävlingen!
2012-10-21, 19:01
  #1
Medlem
Omegamans avatar
Sitter och programmerar mot en arduino UNO. Ett väldigt enkelt kort, men jag har lite problem att felsöka när jag kodar. Vanligtvis när jag programmerar i ADA eller visual studios så brukar jag lägga in ett "hello world" för att se vart programmet "tar vägen" så att säga. Det blir väldigt enkelt att felsöka då.

Men med mitt kort så har jag ingen display utan jag får använda mig utav en enda led lampa. Går det på något sätt att få kortet att skriva ut saker i cmd till exempel? Detta är egentligen inte jätte viktigt men det skulle underlätta för framtiden.

Men till min huvudsakliga fråga, jag försöker skapa ett program som skickar ut en signal i 20 min då jag får in en viss spänning på en port. Med andra ord försöker jag hantera timer funktionen "millis()" men det går inte jätte bra.

Kod:
#include "Arduino.h"

int minutes_1 = 60000;
int minutes_20 = 1200000;
int minutes_240 = 14400000;

int current_time_1;
int current_time_2;

int timer_running_1 = 0;
int timer_running_2 = 0;
int led = 13;

void setup() 
{
  Serial.begin(9600);
  pinMode(led, OUTPUT);
}

void loop() 
{  
  int sensorValue_A0 = analogRead(A0);
  float Voltage_A0 = sensorValue_A0*(5.0/1023.0); // läser in signalen på port A0
  
  int sensorValue_A1 = analogRead(A1);    
  float Voltage_A1 = sensorValue_A1*(5.0/1023.0);  // läser in signalen på port A1
  
  if(Voltage_A0 > 4) // kontrollerar om det är över 4 volt jag får in
  {
    timer_running_1 = 1; // sätter igång ett vilkor för att börja köra den första timern
    current_time_1 = millis(); // kollar vilken millisekund det är just nu
  }
  
  if(Voltage_A1 > 4)
  {
    timer_running_2 = 1; // sätter igång ett vilkor för att börja köra den andra timern
    current_time_2 = millis(); // kollar vilken millisekund det är just nu
  }
   
   
  if (timer_running_1 == 1)
  {   
    if((long)(millis() - (minutes_20 + current_time_1)) >= 0) // när det har gått 20 min så går vi in och bryter signalen
    {
      digitalWrite(led, LOW);
      timer_running_1 = 0;
    }
    else
      digitalWrite(led, HIGH);
  }
  
    if (timer_running_2 == 1)
  {
    if((long)(millis() - (minutes_240 + current_time_2)) >= 0) // när det har gått 240 min så går vi in och bryter signalen
    {
      digitalWrite(led, LOW);
      timer_running_2 = 0;
    }
    else
      digitalWrite(led, HIGH);
  }
}

angående if-satsen

Kod:
 if((long)(millis() - (minutes_20 + current_time_1)) >= 0)

current_time_1 är ju vilket värde millis() har när jag bestämmer mig för att sätta igång timern. Sedan adderar jag x antal millisekunder till detta och får då ett värde som jag väntar på att millis() ska överstiga. När den gör det vet jag att det har gått x antal millisekunder.

Men varför fungerar inte min kod?
Citera
2012-10-21, 20:25
  #2
Moderator
Protons avatar
Det är inte så att du kan köra din kod i en debugger då? Vad är det du kodar i exempelvis, finns det en debugger i den miljön? Annars kanske du kan prova att använda GDB, GNU Debugger?
Citera
2012-10-21, 20:26
  #3
Moderator
Protons avatar
Övr. Utv.frågor -> Cpp /Mod
Citera
2012-10-21, 21:10
  #4
Medlem
MeanMEs avatar
Nu har jag ju inte en pejling på hur funktionerna du anropar funkar.

Men en while loop känns mer naturlig.

Kod:
while ( tiden som ska förflyta <= sluttid ){

    kod som krävs för att få dioden att lysa;

}

Släck dioden;
Citera
2012-10-21, 21:30
  #5
Medlem
najtros avatar
Prova Serial.println(variabel); och tryck Ctrl + Skift + M eller Tools > Serial Monitor

Den här länken kanske kan vara till lite hjälp också. Det står helt enkelt att millis() returnerar tiden sedan din Ardunio startade.

Förmodar att din sats bör se ut ungefär såhär
time = 20 * 60 * 1000;
if (millis() >= time)
__________________
Senast redigerad av najtro 2012-10-21 kl. 21:38.
Citera
2012-10-22, 22:02
  #6
Medlem
Omegamans avatar
Jag hittade problemet.

först och främst måste alla variabler som ska jämföras med millis() vara av typen unsigned long.

och if-satsen ska se så här:

Citat:
if((millis() - current_time_2) >= minutes_240)

Eftersom allt är av typen unsigned long så fungerar det även när millis() rullar över.
Citera
2018-06-06, 17:54
  #7
Medlem
Jag lånar tråden. Jag har precis köpt en arduino från kjell & company, deras egen modell.
Jag installerade programmet och tänkte testa den men jag kan inte välja någon port till den. Jag hittar inte heller i "datorhantering" att någon enhet är kopplad till usb porten.

Någon som vet vad jag bör göra?
Citera
2018-06-19, 05:07
  #8
Medlem
distanss avatar
Citat:
Ursprungligen postat av Boven541
Jag lånar tråden. Jag har precis köpt en arduino från kjell & company, deras egen modell.
Jag installerade programmet och tänkte testa den men jag kan inte välja någon port till den. Jag hittar inte heller i "datorhantering" att någon enhet är kopplad till usb porten.

Någon som vet vad jag bör göra?

Lite sent svar så du kanske redan har löst det.. men det beror lite på vilken vilken platta och vilken Windows du har Troligtvis har du inte fått in USB -drivrutinerna korrekt. Kolla guiderna på https://www.arduino.cc/en/Main/Software
Citera
2023-01-29, 09:41
  #9
Medlem
Muppetys avatar
På 90-talet pysslade vi med något som hette BASIC-stamp o programmerade o satte ihop komponenter. Jag byggde bl.a. en radar som kunde mäta hastigheten på bilarna. Det var på ett kombinerat naturvetenskapligt och el-program på gymnasiet.

Men sen blev jag sjuk o den kunskapen föll i glömska.

Men nu tänkte jag försöka mig på liknande projekt o har förstått att Arduino är det lämpligaste nu om man vill kombinera programmering o elektronik. Så jag beställde en hel hög med komponenter från AliExpress o Banggood. Nu söker jag bra nybörjarsidor, men enklare experiment man kan göra, så att man lär sig hur det funkar. Jag minns ju grunderna vad de olika komponenterna är, lite formler o grunder i digitalteknik.

Tror ni detta blir en bra början...

Arduino:
https://www.aliexpress.com/item/1005002997846504.html

Sensorer:
https://www.banggood.com/45-IN-1-or-...p-1619901.html

Moduler:
https://www.banggood.com/AOQDQDQD-Mo...p-1758472.html

Lite komponenter:
https://www.banggood.com/1900PCS-Meg...p-1976635.html
https://www.banggood.com/1390pcs-Ele...p-1757066.html

Samt lite plattor man kan koppla ihop på (har inte tänkt börja etsa egna kretskort ännu), lite kablar o ett ESD-armband.

Har kvar mina läroböcker i elektronik, samt böcker som "501 elektroniska byggprojekt" o liknande.

Tacksam för tips om bra sidor! Främst Arduino-experiment.
Citera
2023-02-01, 21:54
  #10
Medlem
Citat:
Ursprungligen postat av Muppety
På 90-talet pysslade vi med något som hette BASIC-stamp o programmerade o satte ihop komponenter. Jag byggde bl.a. en radar som kunde mäta hastigheten på bilarna. Det var på ett kombinerat naturvetenskapligt och el-program på gymnasiet.

Men sen blev jag sjuk o den kunskapen föll i glömska.

Men nu tänkte jag försöka mig på liknande projekt o har förstått att Arduino är det lämpligaste nu om man vill kombinera programmering o elektronik. Så jag beställde en hel hög med komponenter från AliExpress o Banggood. Nu söker jag bra nybörjarsidor, men enklare experiment man kan göra, så att man lär sig hur det funkar. Jag minns ju grunderna vad de olika komponenterna är, lite formler o grunder i digitalteknik.

Tror ni detta blir en bra början...

Arduino:
https://www.aliexpress.com/item/1005002997846504.html

Sensorer:
https://www.banggood.com/45-IN-1-or-...p-1619901.html

Moduler:
https://www.banggood.com/AOQDQDQD-Mo...p-1758472.html

Lite komponenter:
https://www.banggood.com/1900PCS-Meg...p-1976635.html
https://www.banggood.com/1390pcs-Ele...p-1757066.html

Samt lite plattor man kan koppla ihop på (har inte tänkt börja etsa egna kretskort ännu), lite kablar o ett ESD-armband.

Har kvar mina läroböcker i elektronik, samt böcker som "501 elektroniska byggprojekt" o liknande.

Tacksam för tips om bra sidor! Främst Arduino-experiment.
Roligt!
Har använt grejer från billiga kit från Amazon, och där brukar kvalitén vara helt OK enligt min erfarenhet, så misstänker att samma sak gäller från banggood och aliexpress. Undantaget är kopplingsdäcken, när man väl insett att det är sitt nya kopplingsdäck som glappar lite ibland som gör att ditt bygge inte fungerar har man slitit sitt hår för länge... Där rekommenderar jag att köpa från exempelvis electrokit.com eller kjell.

På youtube finns mycket Arduino-innehåll. Kan rekommendera kanalen GreatScott, inte bara Arduino utan allt möjligt inom elektronik. Den här hittade jag också för ett tag sedan, den verkar bra (på svenska): https://www.youtube.com/@happesrobotik1781/featured

Kan även rekommendera elektronikforumet.com.

Finns ju andra intressanta mikroprocessorer och SoC:er för den delen om du vill kombinera programmering och elektronik, Raspberry Pi (nåja, finns ju iofs inte i lager nånstans), ESP8266, RP2040 och Teensy exempelvis. Kan vara värt att nämna! Inget fel att använda Atmega328-baserade Arduino UNO dock, passar utmärkt till massor av byggen.

EDIT: Mjukvarutips:
Webbaserad kretssimulator: https://falstad.com/circuit/
Visual Studio Code + PlatformIO plugin: Bra och enkelt alternativ till Arduino IDE (kanske mer relevant om man kommer från programmeringsbakgrund)
Fritzing: Enkelt program för att rita kretsar på kopplingsdäck (har väl även stöd för schemaritning tror jag)
__________________
Senast redigerad av MT6510 2023-02-01 kl. 21:58.
Citera
2023-02-01, 21:58
  #11
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Muppety
På 90-talet pysslade vi med något som hette BASIC-stamp o programmerade o satte ihop komponenter. Jag byggde bl.a. en radar som kunde mäta hastigheten på bilarna. Det var på ett kombinerat naturvetenskapligt och el-program på gymnasiet.

Men sen blev jag sjuk o den kunskapen föll i glömska.

Men nu tänkte jag försöka mig på liknande projekt o har förstått att Arduino är det lämpligaste nu om man vill kombinera programmering o elektronik. Så jag beställde en hel hög med komponenter från AliExpress o Banggood. Nu söker jag bra nybörjarsidor, men enklare experiment man kan göra, så att man lär sig hur det funkar. Jag minns ju grunderna vad de olika komponenterna är, lite formler o grunder i digitalteknik.

Tror ni detta blir en bra början...

Arduino:
https://www.aliexpress.com/item/1005002997846504.html

Sensorer:
https://www.banggood.com/45-IN-1-or-...p-1619901.html

Moduler:
https://www.banggood.com/AOQDQDQD-Mo...p-1758472.html

Lite komponenter:
https://www.banggood.com/1900PCS-Meg...p-1976635.html
https://www.banggood.com/1390pcs-Ele...p-1757066.html

Samt lite plattor man kan koppla ihop på (har inte tänkt börja etsa egna kretskort ännu), lite kablar o ett ESD-armband.

Har kvar mina läroböcker i elektronik, samt böcker som "501 elektroniska byggprojekt" o liknande.

Tacksam för tips om bra sidor! Främst Arduino-experiment.
Jag har också funtat på detta, men inte kommit mig för ännu.
Jag har dock sneglat på Arduino-simulatorer, däribland denna:
https://wokwi.com/

Man kan smidigt testa saker här "virtuellt", innan man gör det i verkligheten. Också lite idéer tänker jag.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback