Подсобите с кодом

Ipasxa
Offline
Зарегистрирован: 13.06.2016

Прошу помощи, так как у самого уже горит время
Есть несколько непонятных мне проблем:
1. В моем проекте используется несколько датчиков(света - обычный фоторезистор, датчик влажности почвы - yl-69), используются для их данных разные порты, а именно 9600, 4800 соответственно. В чем сама суть проблемы, данные с датчика влажности принимаются на ура, все хорошо, а вот с все плачевно, в какой бы порт я его не закидывал выдает данные в иероглифах и в строчку, так будто слетела кодировка.
2. В этом же проекте захотел подключить пару семисегментных индикаторов с использованием микросхем cd4026, не смог сообразить как сделать вывод данных из порта на эти самые индикаторы.
Помогите пожалуйста!!!!

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

Ничего не понял, какой-то голимый бред написан. Боже, попусти автора, приход был тяжким :)

Ipasxa
Offline
Зарегистрирован: 13.06.2016

Ты бы лучше уточнил что непонятно конкретно.
И где тут бред?

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

Уточняю: нихера не понятно. Ты сам свой бред понять попробуй, на разные порты, в иероглифах и в строчку, как сделать вывод данных из порта на индикаторы.

Какие порты, какая плата, где, блять, хоть кусок кода? Мы тут давеча всех ведьм и астрологов пожгли - теперь предсказывать некому, цуко.

Ipasxa
Offline
Зарегистрирован: 13.06.2016
const int pinPhoto = A0;
const int pinLed = 12;
const int pinledtest = 8;
int raw = 0;

const int sensorPin = A1;
const int led = 11;
const int ledtest = 9;
int sensorValue = 0;

void setup() {
  Serial.begin(1200);
  pinMode( pinPhoto, INPUT );
  pinMode( pinLed, OUTPUT );
  pinMode( pinledtest, OUTPUT );

  Serial.begin(4800);
  pinMode( sensorPin, INPUT);
  pinMode( led, OUTPUT);
  pinMode( ledtest, OUTPUT);
}

void loop() {

  sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  if ( sensorValue>1000)
  digitalWrite( led, HIGH);
  else
  digitalWrite( led, LOW);
 if ( sensorValue>1000)
  digitalWrite( ledtest, HIGH);
else
  digitalWrite( ledtest, LOW);
  delay(0);

  raw = analogRead(pinPhoto);
  Serial.println(raw);
  if ( raw < 700)
  digitalWrite( pinLed, HIGH );
  else 
  digitalWrite( pinLed, LOW );
  if ( raw < 850)
  digitalWrite( pinledtest, HIGH );
else 
  digitalWrite( pinledtest, LOW );
  delay(0);
}  


 

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

1. Какой смысл ты вкладываешь в строчки номер 12 и 17, поясни?

2. Где в этом коде работа с датчиками DHT и иероглифы?

3. Чего ты хочешь добиться этим кодом?

Ответь, плз, на вопросы, чтобы было понятней. Пока вижу, что ты два раза (зачем-то) стартуешь аппаратный UART с разной скоростью, да выводишь в порт значение, прочитанное с аналогового входа. Ну и по условиям вкл/выкл пины, всё. Где тут проблема - не вижу вообще.

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

DIYMan пишет:
1. Какой смысл ты вкладываешь в строчки номер 12 и 17, поясни?
Это у него разные порты. Ну во всяком случае - он так считает...

___________________________________________________________

Ipasxa, бред содержится вот здесь:

Ipasxa пишет:
...используются для их данных разные порты, а именно 9600, 4800 соответственно.

9600 и 4800 - это не порты, а скорость передачи вообще-то. Ты в скетче два раза стартуешь один и тот же порт, но с разной скоростью. Наверно нельзя отправлять поток в один и тот же порт на двух скоростях одновременно.

Serial.begin(1200); // Грубо говоря это вот что:

В данном случае у меня "Serial()" ардуины подключён к порту "COM 3" на компе.  У тебя там свой порт будет... Но он - только один, потому что ардуину ты подключаешь только одним USB проводом и только к одному порту.