Форум программистов, компьютерный форум, киберфорум
Наши страницы
Arduino
Войти
Регистрация
Восстановить пароль
 
Artem_Proger
0 / 0 / 0
Регистрация: 12.03.2019
Сообщений: 6
1

Переписать код Arduino в C

12.05.2019, 18:26. Просмотров 140. Ответов 1
Метки нет (Все метки)

Добрый день форумчане, нужна ваша помощь. Имеется код написанный в Arduino IDE.
Помогите пожалуйста переписать его на простой Си, а то у меня знаний пока не хватает это сделать.
Код этот написан для вело спидометра.
Вот сам код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <Adafruit_SSD1306.h>
#include <Wire.h>
 
 
#define pi 3.14 
#define brakelight 8
#define diameter .66
#define numberofreadings 6
#define cutoff 3
#define velocitycutoff 1.2   // in m/s
#define displaychangeafter 5000
 
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
 
const int chipSelect= 9;
 
int n=0;
int count=0;
double instant=0;
double previnstant=0;
double prevprevinstant=0;
int wheelcount=0;
float velocity=0;
float accleration=0;
float distance=0;
int temp; 
bool unit1=0;
bool unit2=1;
bool unit3=0;
int unitmillis1=0;
int unitmillis2=0;
int unitmillis3=0;
 
void setup()
{
  pinMode(2,INPUT_PULLUP);
  pinMode(brakelight,OUTPUT);
  attachInterrupt(digitalPinToInterrupt(2),cross,FALLING);
 
  display.begin(SSD1306_SWITCHCAPVCC , 0x3C);
  display.setTextColor(WHITE);
  display.setTextSize(3);
  
}
 
void loop()
{
 
  if(0>accleration)
  {
    digitalWrite(brakelight,HIGH);   
  }
  
  if(0<accleration)
  {
    digitalWrite(brakelight,LOW);
  }
  
  {
 
    if(unit1!=1&&unit2!=1&&unit3!=1)
    {
      display.clearDisplay();
      display.setCursor(0,0);
      display.print(velocity*18/5);
      display.setTextSize(2);
      display.setCursor(67,18);
      display.print("km/hr");
      display.display();
      display.setTextSize(3);
      display.display();
    }
 
    else
    {
      display.clearDisplay();
      display.setCursor(0,0);
      display.print(distance);
      display.setTextSize(1);
      display.setCursor(90,25);
      if(distance==0){
        display.print("START");
      }
      else{
        display.print("meters");
      }
      display.display();
      display.setTextSize(3);
    }
     
    
  }
 
  if(unitmillis1!=millis()/displaychangeafter+1)
  {   
    unitmillis1=millis()/displaychangeafter+1;
    unit1=1;
  }
  if(unitmillis2!=millis()/displaychangeafter+2)
  {
    unitmillis2=millis()/displaychangeafter+2;
    unit2=1;
  }
  if(unitmillis3!=millis()/displaychangeafter)
  {
    unitmillis3=millis()/displaychangeafter;
    unit3=1;
  }
  
}
 
void cross()
{
 
  prevprevinstant=previnstant;
  previnstant=instant;
  instant=micros()/1000.0;
  wheelcount++;
 
 
  if(wheelcount>2)
  {
    distance=diameter*wheelcount*pi;
    velocity=diameter/(instant-previnstant)*pi;
    accleration=2*diameter*pi*(1/(instant-previnstant)-1/(previnstant-prevprevinstant))/(instant-prevprevinstant);
    velocity=velocity*1000; 
    accleration=accleration*100000000;
    
    unit3=0;
    unit2=0;
    unit1=0; 
    
  }
  
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2019, 18:26
Ответы с готовыми решениями:

Модуль распознавания речи + Arduino Pro mini + Arduino MP3-Sheild
Список компонентов: 1).Модуль распознавания речи.(напряжение питания от 4,5 до 5,5 Вольт DC)...

Arduino UNO. Как работать c RFID-сканнером и Arduino на одном Serial-порту?
Рас уж тут речь зашла об ардуине и многопоточности COM порта, думаю могу обратиться именно сюда за...

Arduino uno + arduino ethernet + delphi для чайников
Доброго времени суток. У меня такая задача нужно реализовать программу на Delphi которая...

Arduino обмен данные между Arduino
Доброго времени суток, писал код обмен данных между двумя ардуинкой, отправляю из одной ардуинку...

Переписать функцию с Arduino на Atmega8
В Arduino есть функции на СИ Цифровой ввод/вывод pinMode() digitalWrite() digitalRead() ...

1
taraserker
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 10
15.05.2019, 20:36 2
Теоретически:

Пишешь функцию int main{},
то что внутри setup() заносишь в начало, как инициализация
то что внутри loop() заносишь в вечный цикл
C
1
 for(;;){...}
Если покопаться внутри файлов ардуино, там так же и сделано.

А дальше смотреть по ошибкам, чтобы библиотеки от ардуино заработали.
Все библиотеки ардуино заточены под ардуиновские выводы с ее нумерацией.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2019, 20:36

Переписать JS AJAX запрос к веб-серверу на Arduino на C#
На Arduino работает Веб сервер. Он формирует html-страницу, принимает AJAX запрос и отсылает ответ....

Переписать код с switch на код с использованием массивов
&lt;?php $action = $_POST; switch($action){ case 'first' echo 'первый' break; case 'red' echo...

Как переписать код Pascal на код VB
var Form1: TForm1; n:integer=0; s:real=0; k:integer=0; implementation {$R *.dfm} ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru