Ви не увійшли.
Сторінки 1
Я купил его за 23 евро. пол цены и он ваш )) устроит?
Надо брать для колекции. Я ж должен топтаться по граблям...
Мне тоже понравилось и я даже его купил. Но по сравнению с платформио - дичь. Автодополнение работает криво. Могу перепродать лицензию не дорого ))
Давайте откуплю.
Совсем плохо с работой?
0z0n пише:Переменных где то под сотку. С десяток масивов. 8 флоатов. Може в голове кардибалет. И пару дней не писать
А переменные наверное у вас тру или фелз?
Десяток масивов
Похоже программирование не ваш конёк. Никакой редактор эту оплошность не устраник окромя Вас, любезный друг!
Надо учится программировать или спросите как сделать...
repo, wepo. Как бы за тот срок пока оно тут висит и обезьяна догнала бы. Ответ вообще не туда.
Очень похоже на скрытые спец символы. Возможно вы откуда то копировали код. И еще вопрос, а как отображается в обыкновенном терминале?
Может кто сталкивался. Есть условно 5 кнопок с фиксацией. На таче. Надо запоминать положение фиксированной кнопки. Какая, одна из 5. Также есть более 20 параметров integer. Чтобы при загрузке она их подымала. Как это можно записывать в память самой панели?
Переменных где то под сотку. С десяток масивов. 8 флоатов. Може в голове кардибалет. И пару дней не писать
Довольно сложный код. Начинаю путатся в переменных и процедурах. Может кто посоветует альтернативу.
Собственный опыт:
1. eclipse - вообще не понял как создать проект. Ставил ставил. Так и не получилось.
2. Geany - не плохой редактор. Но это с другой планеты. Я так и не понял как заливать и подключать библиотеки.
3. platformio-ide - таже болячка с библиотеками. Кидать в папку с проектом?
4. PROGRAMINO IDE - понравилось, но не нашел лекарства. А триал душу не греет.
5. codeblocks - все супер. Не нашел как сделать проэкт для ESP или STM. Если писать под ардуино все хорошо. Но когда у вас другая плата допустим как у меня ЕСП32. Не понял как создавать проекты альтернативы ардуино.
Впринципе все не так. Сигнал надо опрашивать постояннов цикле. Второй не понятно что вы опрашиваете. Это анагологовый сигнал или дискрет. Если значение 1,0 тогда проще. Но кто дает этот сигнал я так и не понял что за устройство? Где вы его берете. И второй вопрос что с ним делать тоже не понятно до конца.
Тут точно не програмирование. Тут механика.
https://uk.wikipedia.org/wiki/%D0%94%D0%B8%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D1%96%D0%B0%D0%BB_(%D0%BC%D0%B5%D1%85%D0%B0%D0%BD%D1%96%D0%BA%D0%B0).
http://forum.amperka.ru/threads/esp-8266-esp32-nodemcu-lua-%D0%B0%D0%B7%D1%8B-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F.12558/
Вот тут курс молодого бойца по есп. Там просто дохрена. Я все пробую, учусь. И человек который выкладывал адекватный. Отвечает.
Получилось. Пасиб!
Wire.requestFrom(8, 16);
Пасиб огромное
А вот здесь на 16 менять не надо в операции сравнения?
myInts1 = Wire.read ();
myInts1 <<= 8; /// 16 здесь не надо?
myInts1 |= Wire.read ();
Из этого изврата есть FLProg.Ток она пошире и френдли. Но я такое не люблю
Помогите плиз взят пример:
Мастер прием:
#include <Wire.h>
int result1 = 2;
int result2 = 2;
int result3 = 2;
int result4 = 2;
void setup() {
Wire.begin(); // join i2c bus (address optional for master)
Serial.begin(9600); // start serial for output
}
void loop() {
Wire.requestFrom(8, 8); // request 6 bytes from slave device #8
while (Wire.available()) { // slave may send less than requested
result1 = Wire.read ();
result1 <<= 8;
result1 |= Wire.read ();
result2 = Wire.read ();
result2 <<= 8;
result2 |= Wire.read ();
result3 = Wire.read ();
result3 <<= 8;
result3 |= Wire.read ();
result4 = Wire.read ();
result4 <<= 8;
result4 |= Wire.read ();
Serial.print(result1);Serial.print(" ");Serial.print(result2);Serial.print(" ");Serial.print(result3);Serial.print(" ");Serial.println(result4);
}
delay(500);
}
Слейв отдача:
#include <Wire.h>
int value1 = -12350; // ie. 0x04 0xD2
int value2 = -1350;
int value3 = 2350;
int value4 = 12350;
void setup() {
Wire.begin(8); // join i2c bus with address #8
Wire.onRequest(requestEvent); // register event
}
void loop() {
delay(100);
value1 = value1 + 1 ;
value2 = value2 + 1 ;
value3 = value3 + 1 ;
value4 = value4 + 1 ;
}
// function that executes whenever data is requested by master
// this function is registered as an event, see setup()
void requestEvent() {
Wire.write (highByte (value1));
Wire.write (lowByte (value1));
Wire.write (highByte (value2));
Wire.write (lowByte (value2));
Wire.write (highByte (value3));
Wire.write (lowByte (value3));
Wire.write (highByte (value4));
Wire.write (lowByte (value4));
// as expected by master
}
Переделал отдачу
for (int i = 0; i < 8; i++) {
Wire.write (highByte (myInts[i]));
Wire.write (lowByte (myInts[i]));
}
}
Прием:
void WareReadSlave() { // request 8 bytes from slave device #8
Wire.requestFrom(8, 8);
while (Wire.available()) { // slave may send less than requested
myInts1 = Wire.read ();
myInts1 <<= 8;
myInts1 |= Wire.read ();
myInts2 = Wire.read ();
myInts2 <<= 8;
myInts2 |= Wire.read ();
myInts3 = Wire.read ();
myInts3 <<= 8;
myInts3 |= Wire.read ();
myInts4 = Wire.read ();
myInts4 <<= 8;
myInts4 |= Wire.read ();
myInts5 = Wire.read ();
myInts5 <<= 8;
myInts5 |= Wire.read ();
myInts6 = Wire.read ();
myInts6 <<= 8;
myInts6 |= Wire.read ();
myInts7 = Wire.read ();
myInts7 <<= 8;
myInts7 |= Wire.read ();
myInts8 = Wire.read ();
myInts8 <<= 8;
myInts8 |= Wire.read ();
}
}
В последних четырех значениях билиберда.
Как изменить код. Подскажите?
Я смотрю что у вас в скетчах по разному обозначен пин слейв для карты. В одном sc, в другом чипселект. Может в этом проблема?
наверное запутался. Но как я его уже не обзывал. толку 0.
Они у вас что по отдельности работают?
Не RF24 в определенный момент затыкается. Уже выяснил что у меня нет SPI2 а проблема в китайском модуле SD micro. Он не заканчивает сесию а втупую держиш шину. Из за этого масса проблем.
Это я уже читал. Не очень понимаю. Там в мануале сказано что есть 2 SPI независимых. (https://www.microchip.com/wwwproducts/en/ATmega2560)По идеее я могу их оба сделать мастерами. Как сделать второй мастером. Как его вообще объявить? В чем суть мат части? Да чего то не понимаю. На вики болт тоже. При чем тут вики.
Нужна помощь с этим вопросом т.к. модуль micro sd card блокирует работу других устройств arduino на шине SPI. Взял Megu для этих целей но не могу поднять SPI2 помогите кто соображает как это сделать. Мат части нигде толком нет.
Точнее модуль SD работает всегда но вот незадачка если V5+ подключаю к источнику питания даже не подключив V5- модуль RF24 ложится и начинает при опросе каналов кидать "4444444444444444444444444444444444444444" как будто он не подключен.
Вот стандартный скетч немного переработаный для "RF 24"
#include <Wire.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <SD.h>
Sd2Card card;
SdVolume volume;
SdFile root;
const int chipSelect = 4;
//RF24 radio(9,10); // инициализировать модуль на пинах 9 и 10 Для Уно
RF24 radio(9,53);// Для Меги
int SR = 53;
int SC = 4;
const uint8_t num_channels = 128;
uint8_t values[num_channels];
void setup(void)
{
Serial.begin(9600);
pinMode(SR,OUTPUT);
pinMode(SC,OUTPUT);
pinMode(9,OUTPUT);
digitalWrite(9, LOW);
digitalWrite(SR, LOW);
digitalWrite(SC, HIGH ); // - работа с пином
printf_begin();
radio.begin();
radio.setAutoAck(false);
radio.startListening();
radio.printDetails(); // Вот эта строка напечатает нам что-то, если все правильно соединили.
delay(5000); // И посмотрим на это пять секунд.
radio.stopListening();
int i = 0; // А это напечатает нам заголовки всех 127 каналов
while ( i < num_channels ) {
printf("%x",i>>4);
++i;
}
printf("\n\r");
i = 0;
while ( i < num_channels ) {
printf("%x",i&0xf);
++i;
}
printf("\n\r");
}
const int num_reps = 100;
void loop(void)
{
memset(values,0,sizeof(values));
int rep_counter = num_reps;
while (rep_counter--) {
int i = num_channels;
while (i--) {
radio.setChannel(i);
radio.startListening();
delayMicroseconds(128);
radio.stopListening();
if ( radio.testCarrier() )
++values[i];
}
}
int i = 0;
while ( i < num_channels ) {
printf("%x",min(0xf,values[i]&0xf));
++i;
}
printf("\n\r");
}
int serial_putc( char c, FILE * ) {
Serial.write( c );
return c;
}
void printf_begin(void) {
fdevopen( &serial_putc, 0 );
}
И вот для SD
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include "nRF24L01.h"
#include "RF24.h"
int SR = 53;
int SC = 4;
Sd2Card card;
SdVolume volume;
SdFile root;
const int chipSelect = 4;
void setup() {
pinMode(SR,OUTPUT);
pinMode(SC,OUTPUT);
pinMode(9,OUTPUT);
digitalWrite(9, LOW);
digitalWrite(SR, HIGH);
digitalWrite(SC, LOW); // - работа с пином
Serial.begin(9600);
Serial.print("\nInitializing SD card...");
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
// неверное подключение или карта неисправна
Serial.println("initialization failed");
return;
} else {
// всё ок!
Serial.println("Wiring is correct and a card is present.");
}
// считываем тип карты и выводим его в COM-порт
Serial.print("\nCard type: ");
switch (card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case SD_CARD_TYPE_SDHC:
Serial.println("SDHC");
break;
default:
Serial.println("Unknown");
}
// инициализация файловой системы
if (!volume.init(card)) {
// неверная файловая система
Serial.println("Could not find FAT16/FAT32 partition.");
return;
}
// считываем тип и вычисляем размер первого раздела
uint32_t volumesize;
Serial.print("\nVolume type is FAT");
Serial.println(volume.fatType(), DEC);
Serial.println();
volumesize = volume.blocksPerCluster(); // блоков на кластер
volumesize *= volume.clusterCount(); // кластеров
volumesize *= 512; // 512 байтов в блоке, итого байт..
Serial.print("Volume size (bytes): ");
Serial.println(volumesize);
Serial.print("Volume size (Kbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume size (Mbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.println("\nFiles found on the card (name, date and size in bytes): ");
root.openRoot(volume);
// выводим список файлов
root.ls(LS_R | LS_DATE | LS_SIZE);
}
void loop(void) {
}
Сторінки 1