Ошибка в коде. ПОМОГИТЕ!

koshlyak2001
Offline
Зарегистрирован: 26.04.2020

Здравствуйте. У меня вопрос. Как можно исправить данный участок кода? Вот сам код:

Модератор: Вставьте код по правилам форума.
 
Ошибка возникает в строке:pinMode (i, OUTPUT); И вот сама ошибка:exit status 1
'i' was not declared in this scope
 
mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Лучший мой подарочек - это ты. Программу правильно вставьте.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

koshlyak2001 пишет:

Ошибка возникает в строке:pinMode (i, OUTPUT); И вот сама ошибка:exit status 1

'i' was not declared in this scope
 

Таки и понятно - переменная i не задекларирована. С англицким проблема - учите китайский.

koshlyak2001
Offline
Зарегистрирован: 26.04.2020
#include "TimerOne.h"

#define PIN_LEFT 4
#define PIN_RIGHT 5

unsigned int left = 0;
unsigned int right = 0;
int angle = 0;
int radians;
int pin=i

byte rows[8] = {9, 14, 8, 12, 1, 7, 2, 5};
byte cols[8] = {13, 3, 4, 10, 6, 11, 15, 16};
byte pins[16] = {5, 4, 3, 2, 14, 15, 16, 17, 13, 12, 11, 10, 9, 8, 7, 6};
byte screen[8] = {0, 0, 0, 0, 0, 0, 0, 0};
volatile byte screenRow = 0;
volatile byte screenCol = 0;

int _angle;
int _px;
int _py;
int _w = 7;
int _h = 7;
int _wall[] = {3, 3};
int _count = 0;
int _speed = 3;
int _countPoints = 0;


void setup () {
Timer1.initialize (100);
for (int i=2;i<=17;i++);
pinMode (i, OUTPUT);
Timer1.attachInterrupt (doubleBuffer);

Serial.begin (9600);

face ();
reset ();
}

void doubleBuffer () {
digitalWrite (translatePin (rows[screenRow]), LOW);
digitalWrite (translatePin (cols[screenCol]), HIGH);

screenCol++;
if (screenCol >= 8) {
screenCol = 0;
screenRow++;
if (screenRow >= 8) {
screenRow = 0;
}
}

if ( (screen[screenRow] >> screenCol) & B1 == B1) {
digitalWrite (translatePin (rows[screenRow]), HIGH);
digitalWrite (translatePin (cols[screenCol]), LOW);
} else {
digitalWrite (translatePin (rows[screenRow]), LOW);
digitalWrite (translatePin (cols[screenCol]), HIGH);
}
}

byte translatePin (byte original) {
return pins[original - 1];
}

void allOFF () {
for (int i = 0; i < 8; i++)
screen[i] = 0;
}

void on (byte row, byte column) {
screen[column-1] |= (B1 << (row - 1));
}

void off (byte row, byte column) {
screen[column-1] &= ~ (B1 << (row - 1));
}

void calcWall ()
{
left = analogRead (PIN_LEFT);
right = analogRead (PIN_RIGHT);
left = constrain (map (left, 223, 800, 0, 6), 0, 6);
right = constrain (map (right, 223, 800, 6, 0), 0, 6);

clearWall ();

on (1, left + 1);
on (1, left + 2);
on (8, right + 1);
on (8, right + 2);

_wall[0] = left;
_wall[1] = right;
show ();
}

void clearWall ()
{
for (int i = 0; i < 8; i++)
screen[i] &= B01111110;
}

void clearGame ()
{
for (int i = 0; i < 8; i++)
screen[i] &= B10000001;
}

void loop () {
calcWall ();
enterFrameHandler ();
delay (50);
}

void enterFrameHandler ()
{
if (_count++ < _speed)
return;

_count = 0;
checkCollision ();
calcAngleIncrement ();
show ();
}

void retorted (int angle)
{
Serial.println (angle);
_angle = angle;

if (++_countPoints % 5 == 0 && _speed > 1)
_speed--;
}

void resetAnim ()
{
for (int i = 0; i < 8; i++)
{
screen[i] = B11111111;
delay (25);
}
for (int i = 0; i < 8; i++)
{
screen[i] = B00000000;
delay (25);
}
}

void face ()
{
on (1, 1);
on (1, 2);
on (2, 1);
on (2, 2);
on (7, 1);
on (7, 2);
on (8, 1);
on (8, 2);
on (1, 1);
on (1, 2);
on (4, 4);
on (4, 5);
on (5, 4);
on (5, 5);
on (2, 7);
on (7, 7);
on (3, 8);
on (4, 8);
on (5, 8);
on (6, 8);
delay (5000);
}

void reset ()
{
resetAnim ();

_px = random (3, 5);
_py = random (3, 5);
_angle = random (0, 2) == 0 ? 0 : 180;
_speed = 5;
_countPoints = 0;

show ();
delay (500);
}

void show ()
{
clearGame ();
on (_px + 1, _py + 1);
}

void checkCollision ()
{
if (_px == _w - 1)
{
if (_angle == 315 || _angle == 0 || _angle == 45)
{
if (_py == _wall[1] || _py == _wall[1] + 1)
{
if (_angle == 0 && _py == _wall[1])
retorted (225);
else if (_angle == 0 && _py == _wall[1] + 1)
retorted (135);
else if (_angle == 45 && _py == _wall[1])
retorted (135);
else if (_angle == 45 && _py == _wall[1] + 1)
retorted (180);
else if (_angle == 315 && _py == _wall[1])
retorted (180);
else if (_angle == 315 && _py == _wall[1] + 1)
retorted (225);
}
}
}
else if (_px == 1)
{
if (_angle == 225 || _angle == 180 || _angle == 135)
{
if (_py == _wall[0] || _py == _wall[0] + 1)
{
if (_angle == 180 && _py == _wall[0])
retorted (315);
else if (_angle == 180 && _py == _wall[0] + 1)
retorted (45);
else if (_angle == 135 && _py == _wall[0])
retorted (45);
else if (_angle == 135 && _py == _wall[0] + 1)
retorted (0);
else if (_angle == 225 && _py == _wall[0])
retorted (0);
else if (_angle == 225 && _py == _wall[0] + 1)
retorted (315);
}
}
}

if (_px == _w)
{
reset ();
}
else if (_px == 0)
{
reset ();
}
else if (_py == _h)
{
if (_angle == 45)
_angle = 315;
else if (_angle == 135)
_angle = 225;
}
else if (_py == 0)
{
if (_angle == 225)
_angle = 135;
else if (_angle == 315)
_angle = 45;
}
}

void calcAngleIncrement ()
{
if (_angle == 0 || _angle == 360)
{
_px += 1;
}
else if (_angle == 45)
{
_px += 1;
_py += 1;
}
else if (_angle == 135)
{
_px -= 1;
_py += 1;
}
else if (_angle == 180)
{
_px -= 1;
}
else if (_angle == 225)
{
_px -= 1;
_py -= 1;
}
else if (_angle == 315)
{
_px += 1;
_py -= 1;
}
}

 

b707
Offline
Зарегистрирован: 26.05.2017

в строке 32 уберите точку с запятой.

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Также строку 10 - долой.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Почему это не в песочнице?

koshlyak2001
Offline
Зарегистрирован: 26.04.2020

10 строку я по дури написал,под ночь скидывал и забыл убрать,а так спасибо большое.