Arduino.помагите с кодом.не могу понять какой командой выдавать число полученное математическим путем на группы выводов(и как объединить группу пинов(ArduinoMega))

```
#include  ...
#include  ...
#include <cmath>
#include namespace std;
int main()
{
  float U_SPIR;
  float U_X,U_Y;
  int GRAD,i,w,m,n,q,z,n1,n2,n3,n4,n5,m1,m2,m3,m4,m5;
  int K_X1,K_X2,K_Y1,K_Y2;
  const int Re1=41;
  const int Re2=42;
  const int Re3=43;
  const int Re4=44;
  const int Re5=45;
  const int Re6=46;
  const int LedEr=47;
  const int START=48;
  n1=10;
  n2=20;
  n3=30;
  n4=40;
  n5=50;
  m1=1;
  m2=5;
  m3=10;
  m4=20;
  m5=50;

void setup() {               
  pinMode(Re1,INPUT);              // одиночная конфигурация(хочу использовать АrduinoMega)
  pinMode(Re2,INPUT);
  pinMode(Re3,INPUT);
  pinMode(Re4,INPUT);
  pinMode(Re5,INPUT);
  pinMode(Re6,INPUT);
  pinMode(LedEr,OUTPUT);
  pinMode(START,INPUT);
 ....                          // групповая конфигурация (arduinoMega - надо 5 групп выходов по 8бит(пин)A(pin1-8),B(pin9-16),C(pin17-24),D(pin25-32),E(pin33-40))?!?!?!?!?!??!?!?!?!
 ....
 ....
 ....
 ....
}
for(i=1;i<=1000;i++)    // 1ч. прогрев
{
  delay (10);
  pin1=0;             // пины 1-8 для KANFY_Led
  pin2=0;
  pin3=0;
  pin4=0;
  pin5=0;
  pin6=0;
  pin7=0;
  pin8=0;
  pin9=0;             // пины 9-16 для Х1
  pin10=0;
  pin11=0;
  pin12=0;
  pin13=0;
  pin14=0;
  pin15=0;
  pin16=0;
  pin17=0;            // пины 17-24 для Х2
  pin18=0;
  pin19=0;
  pin20=0;
  pin21=0;
  pin22=0;
  pin23=0;
  pin24=0;
  pin25=0;            // пины 25-32 для Y1
  pin26=0;
  pin27=0;
  pin28=0;
  pin29=0;
  pin30=0;
  pin31=0;
  pin32=0;
  pin33=0;             //  пины 33-40 для Y2
  pin34=0;
  pin35=0;
  pin36=0;
  pin37=0;
  pin38=0;
  pin39=0;
  pin40=0;}
for(i=1;i<=1000;i++)         // 2ч. прогрев
{
  delay (10);
  pin1=1;
  pin2=1;
  pin3=1;
  pin4=1;
  pin5=1;
  pin6=1;
  pin7=0;
  pin8=0;
  pin9=0;
  pin10=0;
  pin11=0;
  pin12=0;
  pin13=0;
  pin14=0;
  pin15=0;
  pin16=0;
  pin17=0;
  pin18=0;
  pin19=0;
  pin20=0;
  pin21=0;
  pin22=0;
  pin23=0;
  pin24=0;
  pin25=0;
  pin26=0;
  pin27=0;
  pin28=0;
  pin29=0;
  pin30=0;
  pin31=0;
  pin32=0;
  pin33=0;
  pin34=0;
  pin35=0;
  pin36=0;
  pin37=0;
  pin38=0;
  pin39=0;
  pin40=0;}
  for(i=1;i<=1000;i++)           // 3ч. прогрев
{
  delay (10);
  pin1=1;
  pin2=1;
  pin3=1;
  pin4=1;
  pin5=1;
  pin6=1;
  pin7=1;
  pin8=1;
  pin9=0;
  pin10=0;
  pin11=0;
  pin12=0;
  pin13=0;
  pin14=0;
  pin15=0;
  pin16=0;
  pin17=0;
  pin18=0;
  pin19=0;
  pin20=0;
  pin21=0;
  pin22=0;
  pin23=0;
  pin24=0;
  pin25=0;
  pin26=0;
  pin27=0;
  pin28=0;
  pin29=0;
  pin30=0;
  pin31=0;
  pin32=0;
  pin33=0;
  pin34=0;
  pin35=0;
  pin36=0;
  pin37=0;
  pin38=0;
  pin39=0;
  pin40=0;}
  z=0;
  A:
  delay(60);
  z=z+1;
  if z==1000 goto D;
  else{
    if DigitalRead(START)==LOW goto A;
    else
    {if pin41=0
      {if pin42=0
       {if pin43=0
        {if pin44=0
         {if pin45=0
                    {delay(1000);
                     goto E}
         else
                    {n=n5;
                     m=m5;
                     goto B;}
      }else
               {n=n4;
                m=m5;
                goto B;}
      }else
               {n=n3;
                m=m3;
                goto B;}
      }else
               {n=n2;
                m=m2;
                goto B;}
    }else
               {n=n1;
                m=m1;
                goto B;}
  }}
  B:
  for(w=1;w<=m;w++)
  {for(i=1;i<=n;i++)
   {for(GRAD=0;GRAD<=90;GRAD++)        // 1 четверть
   {
    U_SPIR=(GRAD*i*i)/(72*n*n);
    U_X=U_SPIR*cos(GRAD*3,1416/180);
    U_Y=U_SPIR*sin(GRAD*3,1416/180);
    K_X1=(int)U_X*51;           // для portB математическое число 0-255
    K_Y1=(int)U_Y*51;           // для portD математическое число 0-255
    ....  portA=1                     //число полученное математическим путем, подать на группы пинов(8 bit)?!?!?!?!?!?!??!?!?!?
    ....  portB= ...
    ....  portC=0
    ....  portD= ...
    ....  portE=0
   }
   for(GRAD=90;GRAD<=180;GRAD++)      // 2 четверть
   {
    U_SPIR=(GRAD*i*i)/(72*n*n);
    U_X=U_SPIR*cos(GRAD*3,1416/180);
    U_Y=U_SPIR*sin(GRAD*3,1416/180);
    K_X2=(int)U_X*51;           // для portС математическое число 0-255
    K_Y1=(int)U_Y*51;           // для portD математическое число 0-255
    ....  portA=1                     //число полученное математическим путем, подать на группы пинов(8 bit)?!?!?!?!?!?!??!?!?!?
    ....  portB=0
    ....  portC= ...
    ....  portD= ...
    ....  portE=0
   }
   for(GRAD=90;GRAD<=180;GRAD++)         // 3 четверть
   {
    U_SPIR=(GRAD*i*i)/(72*n*n);
    U_X=-U_SPIR*cos(GRAD*3,1416/180);
    U_Y=-U_SPIR*sin(GRAD*3,1416/180);
    K_X2=(int)U_X*51;           // для portС математическое число 0-255
    K_Y2=(int)U_Y*51;           // для portE математическое число 0-255
    ....  portA=1                     //число полученное математическим путем, подать на группы пинов(8 bit)?!?!?!?!?!?!??!?!?!?
    ....  portB=0
    ....  portC= ...
    ....  portD=0
    ....  portE= ...
   }
   for(GRAD=90;GRAD<=180;GRAD++)         // 4 четверть
   {
    U_SPIR=(GRAD*i*i)/(72*n*n);
    U_X=U_SPIR*cos(GRAD*3,1416/180);
    U_Y=-U_SPIR*sin(GRAD*3,1416/180);
    K_X1=(int)U_X*51;           // для portB математическое число 0-255
    K_Y2=(int)U_Y*51;           // для portE математическое число 0-255
    ....  portA=1                     //число полученное математическим путем, подать на группы пинов(8 bit)?!?!?!?!?!?!??!?!?!?
    ....  portB= ...
    ....  portC=0
    ....  portD=0
    ....  portE= ...
   }}
   for(i=1;i<=1000;i++)
   {
  pin1=0;
  pin2=1;
  pin3=1;
  pin4=1;
  pin5=1;
  pin6=1;
  pin7=1;
  pin8=1;
  pin9=  ...       // координаты() последней точки K_X1(portB)
  pin10= ...
  pin11= ...
  pin12= ...
  pin13= ...
  pin14= ... 
  pin15= ...
  pin16= ...
  pin17=0;
  pin18=0;
  pin19=0;
  pin20=0;
  pin21=0;
  pin22=0;
  pin23=0;
  pin24=0;
  pin25=0;
  pin26=0;
  pin27=0;
  pin28=0;
  pin29=0;
  pin30=0;
  pin31=0;
  pin32=0;
  pin33= ...   // координаты последней точки K_Y2(portE)
  pin34= ...
  pin35= ...
  pin36= ...
  pin37= ...
  pin38= ...
  pin39= ...
  pin40= ...
  }}
  for(i=1;i<=1000;i++)
  {
  pin1=1;
  pin2=1;
  pin3=1;
  pin4=1;
  pin5=1;
  pin6=1;
  pin7=1;
  pin8=1;
  pin9=0;
  pin10=0;
  pin11=0;
  pin12=0;
  pin13=0;
  pin14=0;
  pin15=0;
  pin16=0;
  pin17=0;
  pin18=0;
  pin19=0;
  pin20=0;
  pin21=0;
  pin22=0;
  pin23=0;
  pin24=0;
  pin25=0;
  pin26=0;
  pin27=0;
  pin28=0;
  pin29=0;
  pin30=0;
  pin31=0;
  pin32=0;
  pin33=0;
  pin34=0;
  pin35=0;
  pin36=0;
  pin37=0;
  pin38=0;
  pin39=0;
  pin40=0;  
  }
  z=0;
  C:
  delay (60);
  z=z+1;
  if z==10000  goto D;
  else
  {
    if DigitalRead(START)==LOW  goto C;
    else
    {if pin41=0
      {if pin42=0
       {if pin43=0
        {if pin44=0
         {if pin45=0
                    {delay(1000);
                     goto E}
         else
                    {n=n5;
                     m=m5;
                     goto B;}
      }else
                   {n=n4;
                    m=m5;
                    goto B;}
      }else
                   {n=n3;
                    m=m3;
                    goto B;}
      }else
                   {n=n2;
                    m=m2;
                    goto B;}
      }else
                   {n=n1;
                    m=m1;
                    goto B;}
  }}
  E:
  DigitalWrite(LedEr,HIGH);
  z=0;
  if z==10000 goto D;
  else
  {
    if DigitalRead(START)==LOW  goto F;
    else
    {
      if pin41=0
      {if pin42=0
       {if pin43=0
        {if pin44=0
         {if pin45=0
                    {delay(1000);
                     goto F}
         else
                    {n=n5;
                     m=m5;
                     DigitalWrite(LedEr,LOW);
                     goto B;}
      }else
                     {n=n4;
                      m=m5;
                      DigitalWrite(LedEr,LOW);
                      goto B;}
      }else
                     {n=n3;
                      m=m3;
                      DigitalWrite(LedEr,LOW);
                      goto B;}
      }else
                     {n=n2;
                     m=m2;
                     DigitalWrite(LedEr,LOW);
                     goto B;}
    }else
                    {n=n1;
                     m=m1;
                     DigitalWrite(LedEr,LOW);
                     goto B;}
    }
  }
  D:
  for(i=1;i<=1000;i++)           // 1ч.завершение
{
  pin1=1;
  pin2=1;
  pin3=1;
  pin4=1;
  pin5=1;
  pin6=1;
  pin7=1;
  pin8=1;
  pin9=0;
  pin10=0;
  pin11=0;
  pin12=0;
  pin13=0;
  pin14=0;
  pin15=0;
  pin16=0;
  pin17=0;
  pin18=0;
  pin19=0;
  pin20=0;
  pin21=0;
  pin22=0;
  pin23=0;
  pin24=0;
  pin25=0;
  pin26=0;
  pin27=0;
  pin28=0;
  pin29=0;
  pin30=0;
  pin31=0;
  pin32=0;
  pin33=0;
  pin34=0;
  pin35=0;
  pin36=0;
  pin37=0;
  pin38=0;
  pin39=0;
  pin40=0;}
  for(i=1;i<=1000;i++)           // 2ч.завершение
{
  pin1=1;
  pin2=1;
  pin3=0;
  pin4=1;
  pin5=1;
  pin6=0;
  pin7=0;
  pin8=0;
  pin9=0;
  pin10=0;
  pin11=0;
  pin12=0;
  pin13=0;
  pin14=0;
  pin15=0;
  pin16=0;
  pin17=0;
  pin18=0;
  pin19=0;
  pin20=0;
  pin21=0;
  pin22=0;
  pin23=0;
  pin24=0;
  pin25=0;
  pin26=0;
  pin27=0;
  pin28=0;
  pin29=0;
  pin30=0;
  pin31=0;
  pin32=0;
  pin33=0;
  pin34=0;
  pin35=0;
  pin36=0;
  pin37=0;
  pin38=0;
  pin39=0;
  pin40=0;}
  for(i=1;i<=1000;i++)           // 3ч.завершение
{
  pin1=0;
  pin2=1;
  pin3=0;
  pin4=0;
  pin5=1;
  pin6=0;
  pin7=0;
  pin8=0;
  pin9=0;
  pin10=0;
  pin11=0;
  pin12=0;
  pin13=0;
  pin14=0;
  pin15=0;
  pin16=0;
  pin17=0;
  pin18=0;
  pin19=0;
  pin20=0;
  pin21=0;
  pin22=0;
  pin23=0;
  pin24=0;
  pin25=0;
  pin26=0;
  pin27=0;
  pin28=0;
  pin29=0;
  pin30=0;
  pin31=0;
  pin32=0;
  pin33=0;
  pin34=0;
  pin35=0;
  pin36=0;
  pin37=0;
  pin38=0;
  pin39=0;
  pin40=0;}
  for(i=1;i<=1000;i++)           // 4ч. завершение
{
  pin1=0;
  pin2=0;
  pin3=0;
  pin4=0;
  pin5=0;
  pin6=0;
  pin7=0;
  pin8=0;
  pin9=0;
  pin10=0;
  pin11=0;
  pin12=0;
  pin13=0;
  pin14=0;
  pin15=0;
  pin16=0;
  pin17=0;
  pin18=0;
  pin19=0;
  pin20=0;
  pin21=0;
  pin22=0;
  pin23=0;
  pin24=0;
  pin25=0;
  pin26=0;
  pin27=0;
  pin28=0;
  pin29=0;
  pin30=0;
  pin31=0;
  pin32=0;
  pin33=0;
  pin34=0;
  pin35=0;
  pin36=0;
  pin37=0;
  pin38=0;
  pin39=0;
  pin40=0;}
}
```

Бред какой-то. Что такое ?

pin1=0;

И зачем эту операцию выполнять тысячу раз?

for(i=1;i<=1000;i++)
1 лайк

А перебирать ножки в цикле - влом?

Ребят! не суди строго,я новичок!
pin1=0 // это означает что на этот пин подается 0
почему так много for , потому что поочередно выключаются или включаются выводы которые управляют работой элт
пожалуйста.проявите терпение к новичку.подскажите и помогите плз.спасибо заранее

Это кто вам сказал ?

А перебирать ножки в цикле - влом? ---- что вы имеете ввиду,не понимаю!

эээмммм я)))))) как сделать? я недогоняю!

https://arduino.ru/Reference/DigitalWrite

значит pin1=LOW;(или HIGH)
pin2=LOW (HIGH) и т.д. так?

Поморгайте диодиком для начала !!! По ссылке есть код для этого !!!

int ledPin = 13;                 // Светодиод подключенный к вход/выходу 13
void setup()
{
  pinMode(ledPin, OUTPUT);      // устанавливает режим работы - выход
}
 
void loop()
{
  digitalWrite(ledPin, HIGH);   // включает светодиод
  delay(1000);                  // ждет секунду
  digitalWrite(ledPin, LOW);    // выключает светодиод
  delay(1000);                  // ждет секунду
}

При этом ledPin=HIGH и ledPin=LOW ни чем моргать не будут !!!

Во первых - это бред, это означает, что переменной pin1 (где она, кстати, определена?) присваивается значение 0. И остальным тоже, т.е. все ваши переменные pin1-pin40 в результате начинают ссылаться на один и тот же пин - нулевой.

Вопрос был - зачем в одном цикле присваивать пину значение 0 тысячу раз подряд?

Родной - не твое это, займись чем нибудь другим, не мучайся

Начните с самого простого, помаргайте диодом, может придёт понимание , а уж потом беритесь за более сложные задачи.

1 лайк

тысяча раз - это типо столько времени она должна работать(1сек)

20 лет назад на ассемблере так было, а сейчас компиляторы пишет кто попало, ошибок полно в них.

1 лайк

Точно? По приведённому коду, Вашим комментариям, а также по тому, что у Вас уж были темы, но Вы зачем-то сменили ник, у меня создалось впечатление, что Вы либо тролль (что скорее всего), либо идиот. Моё мнение - тролль, косящий под идиота.

И, да, кстати, правильно писать не “помагите” как Вы написали в заголовке, а “памагити”.

1 лайк

какой ник , какие темы! ни какого издевательства с моей стороны нет. я очень хочу осуществить один проект,для этого мне нужен МК который надо определенно запрограммировать , да может и идиот, тугой и еще что то там…я прошу у вас помощи, помочь разобраться!как сделать лучше или проще и т.п.!

1 лайк

Он не идиот, вот чего он хотел:

  1. Как число полученное математическим путем подать на выходы группы пинов? Пример: числа от 0 до 255 на 8 пинов (8 разрядов)
    Задача то несложная, главное понять (прощать необязательно):slight_smile:

да! этот вопрос я задавал через моего друга. так как сам не имел возможности пользоваться интернетом!

В setup пишешь

DDRA=0xFF; //весь порт 8 бит на вывод

В loop пишешь

PORTA=математическое число; // число целиком окажется на выводах порта А

И так для всех нужных портов DDRB DDRC DDRD … PORTB PORTC PORTD …

1 лайк

Спасибо тебе большое за помощь и человеческое отношение! буду пробовать.