Behöver hjälp med några programeringsuppgifter (enkla) Arduino
Hej det e snart dags för en gammal omtenta av en kurs i datorteknik.
jag vill säga att jag inte är så duktig på detta och det var ett tag sen jag läste kursen.
Behöver hjälp lösningar till några gamla tentauppgifter.
jag började svara på de och behöver kolla om de är rätta
1)
Skriv en for-loop som skriver ut kvadraten på tal mellan 0 och 9. Använd
funktionerna Serial.println() och Serial.print() för utskrift. Utskriften skall se ut på
följande sätt
0*0=0
1*1=1
2*2=4
3*3=9
.
.
.
9*9=81
for (int i=0; i <10; i++){
serial.println(i*i);
}
2)
a) Skriv funktionen ”Kvadrat(x)” och deklarera variablerna. Funktionen skall
returnera kvadraten på inargumentvärdet x.
b) Anropa funktionen ”Kvadrat” från
void loop(){
.
.
.
}
och skriv ut det returnerade värdet med Serial.println()
2a)
int Kvadrat(int value) {
return value*value;
}
2b)
void loop() {
int toPrint;
toPrint = Kvadrat(1);
Serial.println(toPrint);
}
3)
En vektor med heltal har sparats i:
int Mat_data_Vektor[10];
a) Skriv en for-loop som letar om det finns ett större tal i vektorn än 100. Använd
println() för utskrift till serialmonitorn om det finns större tal än 100.
b) Skriv ut det största värdet i vektorn. Använd println() för utskrift till
serialmonitorn.
Tips: uppgiften behöver inte lösas med funktioner
int largest = Mat_data_Vektor[0];
for(int i=0; i<sizeof(Mat_data_Vektor) i++) {
if(Mat_data_Vektor[i] > 100) {
serial.print(Mat_data_Vektor[i]);//Skriver alla talen > 100 för 3a
}
if(largest < Mat_data_Vektor[i]) {
largest = Mat_data_Vektor[i]; //sparar största värdet för 3b
}
}
serial.print(largest);//skriver ut det största talet för 3b
4)
a) Skriv funktionen ”Compare”. Funktionen skall ha två inargument, x och y av
typen double. Funktionen skall returnera värdet av typen integer. Funktionen skall
returnera en etta om x > y annars noll.
b) Anropa funktionen ”Compare” från
void loop(){
.
.
.
}
och skriv ut det största talet på x eller y med Serial.println()
4a)
int Compare(double x, double y){
if(x>y) {
return 1;
}
return 0;
}
4b)
void loop(){
Compare(1,2); //den här gör anropar funktionen men den bryr sig inte om vad som //returneras...
Serial.println(2);//tvåan är ju y och det är störra än 1... förstår inte riktigt uppgiften faktiskt.
}
5)
En vektor med heltal har sparats i:
int Mat_data_Vektor[10];
a) Skriv en for-loop som summerar de tio heltalsvärdena i vektorn ovan.
b) Skriv ut det största värdet i vektorn. Använd println() för utskrift till
serialmonitorn.
Tips: uppgiften behöver inte lösas med funktioner
5a)
int sum=0;
for(int i=0; i<sizeof(Mat_data_Vektor); i++) {
sum += Mat_data_Vektor[i];
}
6)
a) Skriv funktionen ”Absolute”. Funktionen skall ha ett inargument, av typen
integer. Funktionen skall returnera värdet av typen integer. Funktionen skall
beräkna och returnera absolutbeloppet av inargumentet.
Tips: Absolutbeloppet på |x| är att negativa tal blir positiva.
b) Anropa funktionen ”Absolute” från
void loop(){
.
.
.
}
och skriv ut det returnerade värdet med Serial.println()
6a)
int Absolute(int x) {
return sqrt(x*x);//kvadraten är alltid positiv. ta sen roten ur kvadraten för att få //absolutvärdet. Kanske finns nått annat sätt i Arduino..
}
6b)
void loop(){
Serial.println(Absolute(1));
}
7)
Skriv en for-loop som skriver ut kvadraten på tal mellan 0 och 49 till serialmonitorn.
Använd funktionerna Serial.println() och Serial.print() för utskrift.
Utskriften skall se ut på följande sätt i serialmonitorn.
0*0=0
1*1=1
2*2=4
3*3=9
.
.
49*49=2401
7)
for(int i=0; i<8; i++) {
Serial.print(i);
Serial.print(*);
Serial.print(i);
Serial.print(=);
Serial.println(i*i);
}
8)
a) Skriv funktionen ”Median”. Funktionen skall ha en inargumentvariabel, av typen
Array som skall kunna lagra integers. Funktionen skall returnera värden av typen
integers. Funktionen skall returnera medianvärdet av de integervärdena lagrade i
vektorn/arrayen. Vi antar att vektorn /arrayen alltid har längden 3.
Tips: Medianen är ”mitten värdet”.
Ex 1, medianen är 12 av de tre värdena 3, 100 och 12
Ex 2, medianen är 5 av de tre värdena 5, 2 och 99
b) Anropa funktionen ”Median” från
void loop(){
.
.
.
}
och skriv ut det returnerade värdet med Serial.println()
8a)
int Median(int x[]){
int temp;
for(int i=1;i<sizeof(x);i++) { //Först sortera vektorn
if(x[i]>x[i-1]) {
temp = x[i];
x[i] = x[i-1];
x[i-1] = temp;
}
}
return x[1]; //sen returna värdet som ligger på plats x[1] (i mitten av vektorn)
}
9)
Skriv ett program som skall vänta på en knappnedtryckning. Strömbrytaren/
knappen är kopplad till pin 7. Programmet skall således ”hänga sig” tills knappen
trycks ned.
Ledning: Använd funktionen: digitalRead(inPin);
while(true){
if(digitalRead(7)==1) {
break;
}
}
10)
a) Skriv en funktion ”Find_Largest_Value” som skall leta upp det största talet
lagrade i en vektor. Funktionen skall returnera positionen var det största talet finns i
vektorn. Funktionen skall ha inargumentvärdena x[] och size. Där x är vektorn och
size är argumentet vilket avgör hur lång vektorn är.
ex: Vektorn nedan har 9 element och det största värdet är i position 3. Funktionen skall i detta
exempel returnera talet 3
Värde 13 20 5 74 2 45 3 25 53
Position 0 1 2 3 4 5 6 7 8
b) Anropa funktionen ” Find_Largest_Value” från
void loop(){
.
.
.
}
och skriv ut det returnerade värdet med Serial.println()
int Find_Larges_Value(int x[], int y)
int largest = x[0];
int position = 0;
for(int i=0; i<sizeof(x) i++) { // tror inte att man inte ens behöver använda längden, tror att //sizeof() funkar fint
if(largest < Mat_data_Vektor[i]){
largest = Mat_data_Vektor[i]; //sparar största värdet för 3b
position = i;
}
}
serial.print(largest);//skriver ut det största talet för 3b
11)
a) Skriv funktionen ”Div_by_Two”. Funktionen skall returnera inargumentvärdet
dividerat med 2.
b) Anropa funktionen ”Div_by_Two” från
void loop(){
.
.
.
}
och skriv ut det returnerade värdet med Serial.println()
11a)
double Div_by_Two(int x){
return x/2;
}
11b)
12)
a) Skriv funktionen ”Medel_Varde(x,y)” och deklarera variablerna. Funktionen
skall returnera medelvärdet av två inargumentvärden x och y.
Tips: Medelvärde = (x+y)/2
b) Anropa funktionen ”Medel_Varde” från
void loop(){
.
.
.
}
12a)
double Medel_Varde(int x, int y)
{
return (x+y)/2;
}
12b)
...