Hej Jer,
Hvordan kan man med en button vælge forskellig indexnummer i en multi array ?
Jeg ved lidt her fra min egen indlæg :
http://elektronik-forum.dk/index.php?topic=1148.0Jeg har følgend fil som jeg ser som en multi array :
/**
* AlignmentStars.h
* A bunch of stars that can be used during alignment.
*/
#include <avr/pgmspace.h>
#include "StellarduinoUtils.h"
const AlignmentStar alignmentStars[] = {
{"Sirius", 1.76779309390854, -0.291751177018097, -1.46},
{"Canopus", 1.67530518796327, -0.919715793748845, -0.72},
{"Arcturus", 3.73352834160889, 0.334797783763812, -0.04},
{"Rigel K", 3.83797175293031, -1.06177589858756, -0.01}}
Ud af disse " AlignmentStars " vil jeg så med en button vælge den Star som er best synligt.
Der for har jeg dette intil nu, hvor tallet i [] er den faste index nummer fra filen:
// alignment stars
// Arcturus
SimpleStar alignmentStar1 =
{
0.0,
alignmentStars[2].ra,
alignmentStars[2].dec,
0.0,
0.0,
alignmentStars[2].name,
alignmentStars[2].vmag
};
// Rigel K
SimpleStar alignmentStar2 =
{
0.0,
alignmentStars[3].ra,
alignmentStars[3].dec,
0.0,
0.0,
alignmentStars[3].name,
alignmentStars[3].vmag
};
Dette " SimpleStar " skal jeg bruge her :
void doAlignment() {
// set initial time - actual time not necessary, just the difference!
initialTime = (float)millis() / 86400000.0f * 2.0 * M_PI;
// ask user to point scope at first star
lcd.print("Point: ");
lcd.print(alignmentStar1.name);
lcd.setCursor(0,1);
lcd.print("Then press OK");
// wait for button press
while(digitalRead(OK_BTN) == LOW);
alignmentStar1.time = (float)millis() / 86400000.0f * 2.0 * M_PI;
alignmentStar1.alt = altMultiplier * altEncoder.read();
alignmentStar1.az = azMultiplier * azEncoder.read();
lcd.clear();
lcd.print("Alt set: ");
lcd.print(alignmentStar1.alt * rad2deg, 3);
lcd.setCursor(0,1);
lcd.print("Az set: ");
lcd.print(alignmentStar1.az * rad2deg, 3);
delay(2000);
// ask user to point scope at second star
lcd.clear();
lcd.print("Point: ");
lcd.print(alignmentStar2.name);
lcd.setCursor(0,1);
lcd.print("Then press OK");
// wait for button press
while(digitalRead(OK_BTN) == LOW);
alignmentStar2.time = (float)millis() / 86400000.0f * 2.0 * M_PI;
alignmentStar2.az = azMultiplier * azEncoder.read();
alignmentStar2.alt = altMultiplier * altEncoder.read();
lcd.clear();
lcd.print("Alt set: ");
lcd.print(alignmentStar2.alt * rad2deg, 3);
lcd.setCursor(0,1);
lcd.print("Az set: ");
lcd.print(alignmentStar2.az * rad2deg, 3);
delay(2000);
}
I min teori skal jeg have en for- loops og så lidt mere

så jeg kan få skiftet den nu faste index nummer ud med " i " eller lignde. Men hvordan ?
Jeg har ledt på nettet her er der for de meste kun almindelige arrays.
" AlignmentStar " og " SimpleStar " har hver deres " struct " fil, er vedhæftet.
Programmet er ikke fra mig men fra Casey Fulton