Hej!
Nu är det så att jag har börjat programmera lite Arduino Uno.
Fruktansvärt intressant och roligt när man väl förstår!
Men jag har inte fått greppet på vissa "kommandon"
Jag vet att ( int ) Används för att göra variablar tex.
Men nu i morse så stötte jag på ( constants ) i sammanhang med ( int )
Kan någon förklara åt mig hur det fungerar?
Har ni någon tråd här på Elektronik forumet som förklarar och går igenom alla kommandon som Arduino uno har. Som förklarar så enkelt som möjligt så även jag förstår.
I övrigt är det ett Arduino UNO MICROCONTROLLER jag kör med. Köpte ett startpaket och är på övning 3. Övningen heter Color mixing lamp.
I kretsen har jag 3 photoceller och en RGB led med 3 Anoder och 1 gemensam cathod. Tanken med projektet är att man med hjälp av photocellerna ska läsa av den variabla resistansen i photocellerna. Ta värdet från dom och skicka ut ström på digital output.
Det är ingenting som är specifikt för Arduino, utan det du i så fall vill lära dig mer om är programspråket C.
T ex "const int x = 42;" betyder att man skapar en variabel "x" av typen int (heltal) och tilldelar den värdet 42. const före innebär att variabeln är konstant, och att man därmed inte kan ändra värdet på den senare.
Jag är extremt säker på att det finns material från Arduino som beskriver detta, det skulle väl vara något forum också och de borde nog ha en hel del av detta.
'int' beskriver en variabel som - enl. standarden - är den enklaste för µC'n att hanteras med. Då Arduino ofta är en 8-bit är det i teorin alltså en byte med förtecken, alltså en 'char'.
Då Arduino ju kör deras egen standard är det troligt att en 'int' i verkligheten är en 'signed short', alltså ett word med förtecken (+/-).
'const' beskriver att värdet alltid är det samma och inte ändras ("huggit i sten"), detta betyder att det kan sparas i programminnet om det är enkelt att "komma åt" under programmets gång. Vissa µC sparar värdet i ROM men kopierar till RAM vid uppstart.
'constants' är en del av en beskrivning, kanske en sektion där man skriver in en del konstanter.
Dessa konstanter kan vara i form av #define eller liknende, även 'const int' och andra värden.
Men i detta projekt så använder man en photocell.
Photocellen måste ju ha ett grundvärde. och är det kanske grundvärdet dom vill att man ska ha en constant på? Allså att grundvärdet är "hugget i sten"?
3st röda led till digital output
1st TMP (Temperatur sensor) till analog Input
Syftet med det projektet är att för varje 2 grader temperaturen ökar i TMP så över signalspänningen till Analog input i Arduinot. Men man måste ha en utgångspunkt för temperatursensorn. och det är därför man måste ha en Constants?
Här har ni beskrivningen på constants från Arduino boken.
Constants are similar to variables in that they allow you to
uniquely name things in the program, but unlike variables they
cannot change. Name the analog input for easy reference, and
create another named constant to hold the baseline temperature.
For every 2 degrees above this baseline, an LED will turn on.
You’ve already seen the int datatype, used here to identify which
pin the sensor is on. The temperature is being stored as a float, or
floating-point number. This type of number has a decimal point,
and is used for numbers that can be expressed as fractions.
> Men nu i morse så stötte jag på ( constants ) i sammanhang med ( int )
Var då? Länk?
Utan ett specifikt exempel så går det ju bara att svara i generella
termer så som alla här har gjort. D.v.s. att du har fått svar på vad
en "const" är. Varför det används i ett specifikt fall kan vi ju inte veta.
// LOVE -O- METER
const int sensorPin = A0;
const int baselineTemp = 23.0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600); //Öppna upp en serieport för komunikation
for (int pinNumber = 2; pinNumber < 5; pinNumber++) {
pinMode(pinNumber, OUTPUT);
digitalWrite(pinNumber, LOW);
}
}
void loop() {
int sensorVal = analogRead(sensorPin);
Serial.print("sensor Value:");
Serial.print(sensorVal);
float voltage = (sensorVal / 1024.0) * 5.0;
Serial.print(",Volts:");
Serial.print(voltage);
Serial.print(", degrees C: ");
float temperature = (voltage - .5) * 100;
Serial.println(temperature);
if (temperature < baselineTemp) {
digitalWrite (2, LOW);
digitalWrite (3, LOW);
digitalWrite (4, LOW);
} else if (temperature >= baselineTemp + 2 && temperature < baselineTemp + 4)
{
digitalWrite (2, HIGH);
digitalWrite (3, LOW);
digitalWrite (4, LOW);
} else if (temperature >= baselineTemp + 4 && temperature < baselineTemp + 6) {
digitalWrite (2, HIGH);
digitalWrite (3, HIGH);
digitalWrite (4, LOW);
} else if (temperature >= baselineTemp + 6) {
digitalWrite (2, HIGH);
digitalWrite (3, HIGH);
digitalWrite (4, HIGH);
}
delay (1);
}
Och istället för att vi förklarar så försök själv först kommenterar koden där du förstår vad som händer, och där du tror dig veta vad som händer, likt det du gjort vid Serial.begin, med // och kommentar om vad som händer på varje rad.
Det lär du dig nog mer på, och sen kan någon säkert rätt dig och visa på vad som händer.
När vet man när man ska använda sig av parenteser, semikolon och dom här tecknen { }?
Sitter nu och experiment för mig själv och försöker klura ut hur man gör en räknare.
Syftet med detta experiment är att få upp hur många gånger jag trycker på min återfjädrande strömbrytare i serial monitor.
// Växlar mellan 1 och 0 beroende på knappens status är hög eller låg.
int Knapp=5; // Denna int säger att det är pin 5 den återfjädrande brytaren är kopplad till.
void setup() {
pinMode(Knapp,INPUT); //knappen ska ge en plusa varje gång den trycks ned.
Serial.begin(9600); //Denna funktion är för att öppna porten så arduinot kan komunicera med datorn
}
void loop() {
{
Knapp=digitalRead;
if (Knapp,HIGH)=digitalWrite ("1"); // här vill jad den ska skriva en 1 i seriel monitor om knappen är HIGH
if (Knapp,LOW)=digitalWrite ("0"); // här vill jag den ska skriva en 0 i seriel monitor om knappen är LOW
}
}
Detta är min skript som jag skrivit den. Jag vet att den inte funkar men varför gör den inte det? Vilka argument saknas.
Sen alla parenteser och semikolon har jag höftat med.
Varför lägger du inte koden du postar mellan Kod-taggar?
Det är hopplöst att läsa, och andvänd inte färg på texten, blir ännu hopplösare att använda.
Börja med att läsa en nybörjarhandledning för C-Språket, det hela blir väldigt mycket klarare då, du slipper att hålla på och gissa, och lär dig betydligt snabbare
Du hittar mänger av dem på nätet.