What means :
Select list item : list index too large
Select list item:Attempt to get item number 2 of a list of length 1 : (B)
Please help
What means :
Select list item : list index too large
Select list item:Attempt to get item number 2 of a list of length 1 : (B)
Please help
you have only one item in the list, but you are trying to select the second item, which does not exist
It would really help if you provided a screenshot of your relevant blocks, so we can see what you are trying to do, and where the problem may be.
To get an image of your blocks, right click in the Blocks Editor and select "Download Blocks as Image". You might want to use an image editor to crop etc. if required. Then post it here in the community.
Taifun
Trying to push the limits! Snippets, Tutorials and Extensions from Pura Vida Apps by Taifun.
this is a common issue while receiving something via bluetooth...
see here how to solve it
Taifun
Show us the Arduino source code.
// --------------------------------------------------------------------------- Motors
int motor_left[] = {2, 3};
int motor_right[] = {7, 8};
char command;
//Initializing all variables
//control pin for knight ryder
int light = 9;
int state = LOW;
//digital pin 17 (analog 3) is the buzzer pin.
int buz = 17;
//counter for the Override beep.
int buzCount = 0;
//counter for the start - up beep.
int startBuz = 0;
//Variables where distances measured are stored.
int distFront;
int distLeft;
int distRight;
//Minimum distance of 20cm from any obstacle.
int distLimit = 20;
//HCSR04 Variables
//digital pin 14,15 (analog 0 and 1 respectively)
int trig = 14;
int echo = 15;
unsigned long pulsetime = 0;
//Calculate Battery Level1. Arduino
const float maxBattery1 = 8.0;// Change value to your max battery voltage level!
int perVolt1; // Percentage variable
float voltage1 = 0.0; // Read battery voltage
int level1;
//Calculate Battery Level2. Motor
const float maxBattery2 = 6.0;// Change value to your max battery voltage level!
int perVolt2; // Percentage variable
float voltage2 = 0.0; // Read battery voltage
int level2;
// Use it to make a delay... without delay() function!
long previousMillis = -1000*10;// -1000*10=-10sec. to read the first value. If you use 0 then you will take the first value after 10sec.
long interval = 1000*10; // interval at which to read battery voltage, change it if you want! (10*1000=10sec)
unsigned long currentMillis; //unsigned long currentMillis;
// --------------------------------------------------------------------------- Setup
void setup() {
Serial.begin(9600);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
pinMode(buz,OUTPUT);
pinMode(light,OUTPUT);
startBeep();
// Setup motors
int i;
for(i = 0; i < 2; i++){
pinMode(motor_left[i], OUTPUT);
pinMode(motor_right[i], OUTPUT);
}
}
void loop() {
if (Serial.available() > 0) {
command = Serial.read();
motor_stop(); //initialize with motors stopped
//Change pin mode only if new command is different from previous.
//Serial.println(command);
switch (command) {
case 'F':
//Checks for obstacle since forward command is received.
distFront = readDistance();
if(distFront < distLimit)
{
//Override the controller since obstacle is detected.
override();
distFront = readDistance();
Serial.print("A");
Serial.print(";");
Serial.print(distFront); //send distance to MIT App
Serial.print(";");
Serial.print(0,DEC); //2nd value...dummy variable
Serial.println(";");
}
else
{
//No obstacle----> move forward.
drive_forward();
}
break;
case 'B':
drive_backward();
break;
case 'L':
turn_left();
break;
case 'R':
turn_right();
break;
case 'S':
{
beep();
buzCount = 0;
}
break;
case 'T': //reads distance
{
distFront = readDistance();
Serial.print("A");
Serial.print(";");
Serial.print(distFront); //send distance to MIT App
Serial.print(";");
Serial.print(0,DEC); //2nd value...dummy variable
Serial.println(";");
}
break;
case 'X': //switch ON OFF larson scanner
if (state == HIGH){
state = LOW;
digitalWrite(light, state);
}else{
state = HIGH;
digitalWrite(light, state);}
break;
}
}
/***********************Battery*****************************/
//Read battery voltage every 10sec.
currentMillis = millis();
if(currentMillis - (previousMillis) > (interval)) {
previousMillis = currentMillis;
//Read voltage from analog pin A4 and make calibration for Arduino:
voltage1 = (analogRead(A4)*5.0/1024.0)*2.0; //8.0V
//Calculate percentage...
perVolt1 = (voltage1*100)/ maxBattery1;
if (perVolt1<=75) { level1=0; }
else if (perVolt1>75 && perVolt1<=80) { level1=1; } // Battery level
else if (perVolt1>80 && perVolt1<=85) { level1=2; } //Min ------------------------ Max
else if (perVolt1>85 && perVolt1<=90) { level1=3; } // | 0 | 1 | 2 | 3 | 4 | 5 | >
else if (perVolt1>90 && perVolt1<=95) { level1=4; } // ------------------------
else if (perVolt1>95) { level1=5; }
//Read voltage from analog pin A6 and make calibration for motor:
voltage2 = (analogRead(A6)*5.0/1024.0)*2.0; // 6.0V
//Calculate percentage...
perVolt2 = (voltage2*100)/ maxBattery2;
if (perVolt2<=75) { level2=0; }
else if (perVolt2>75 && perVolt2<=80) { level2=1; } // Battery level
else if (perVolt2>80 && perVolt2<=85) { level2=2; } //Min ------------------------ Max
else if (perVolt2>85 && perVolt2<=90) { level2=3; } // | 0 | 1 | 2 | 3 | 4 | 5 | >
else if (perVolt2>90 && perVolt2<=95) { level2=4; } // ------------------------
else if (perVolt2>95) { level2=5; }
Serial.print("B");
Serial.print(";");
Serial.print(level1);
Serial.print(";");
Serial.print(level2);
Serial.println(";");
//Serial.println(perVolt1);
//Serial.println(voltage1);
//Serial.println(";");
//Serial.println(perVolt2);
//Serial.println(voltage2);
}
}
// --------------------------------------------------------------------------- Drive
void motor_stop(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], LOW);
delay(25);
}
void drive_forward(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}
void drive_backward(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}
void turn_left(){
digitalWrite(motor_left[0], LOW);
digitalWrite(motor_left[1], HIGH);
digitalWrite(motor_right[0], HIGH);
digitalWrite(motor_right[1], LOW);
}
void turn_right(){
digitalWrite(motor_left[0], HIGH);
digitalWrite(motor_left[1], LOW);
digitalWrite(motor_right[0], LOW);
digitalWrite(motor_right[1], HIGH);
}
//Returns distance value from ultrasonic sensor
int readDistance()
{
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig,LOW);
pulsetime = pulseIn(echo, HIGH);
return pulsetime/58.2;//magic
}
void override()
{
/*Note: The time it takes for the rover to turn depends in the
motors you use...so that will be fixed during debugging.*/
//Stop receiving data from the user.
Serial.end();
delay(10);
//Obstacle avoidance maneuver and all that jazz..
motor_stop();
delay(100);
beep();
buzCount= 0;
delay(500);
drive_backward();
delay(300);
motor_stop();
delay(10);
scanLeft();
delay(100);
scanRight();
if(distLeft > distRight && distLeft > distLimit)
{
turn_left();
delay(500);
motor_stop();
}
else if(distRight > distLeft && distRight > distLimit)
{
turn_right();
delay(500);
motor_stop();
}
else
{
drive_backward();
delay(300);
motor_stop();
}
//Restart the receiver.
Serial.begin(9600);
}
void scanLeft()
{
Serial.println("Scanning Left....");
delay(10);
turn_left(); //turns left to scan
delay(300);
motor_stop();
delay(10);
distLeft = readDistance();
//Serial.print("Left is ");
//Serial.println(distLeft); //scan
delay(100);
turn_right(); //turns to the centre again
delay(300);
motor_stop();
}
void scanRight()
{
Serial.println("Scanning Right....");
delay(10);
turn_right();
delay(300);
motor_stop();
delay(10);
distRight = readDistance();
//Serial.print("Right is ");
//Serial.println(distRight);
delay(100);
turn_left();
delay(300);
motor_stop();
}
//Obstacle detected beep
void beep()
{
while(buzCount<2)
{
digitalWrite(buz,LOW);
delay(50);
digitalWrite(buz,HIGH);
delay(50);
digitalWrite(buz,LOW);
buzCount++;
}
}
//Start-up beep
void startBeep()
{
while(startBuz<2)
{
digitalWrite(buz,LOW);
delay(50);
digitalWrite(buz,HIGH);
delay(50);
digitalWrite(buz,LOW);
delay(50);
digitalWrite(buz,HIGH);
delay(75);
digitalWrite(buz,LOW);
startBuz++;
}
}