Мне нужно ПО для того что бы при открытии программы выполнялись действия калькулятора. Написать на любом языке
Написать программу для arduino
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.
Разработка приложений для ПК.
Доработка существующего продукта.
Имеется устройство на базе Arduino Nano в связке с приемником CC2500. Приемник подключен к Ардуино через интерфейс SPI. Данное устройство принимает сигнал на частоте 2,4 Ггц. Имеется код на Arduino IDE взаимодействия ардуино и примника СС2500, код сканирует диапазон сигналов и показывает самый сильный сигнал.
Необходимо переработать данный код для подключения 4 приемников к ардуино по интерфейсу SPI. Программа должна считывать сигнал с 4-х приемников по очереди во всем диапазоне частот 2,4ГГц. Находить самый сильный сигнал на 4- х приемников, а потом сравнивать эти сигналы между собой.
Далее необходимо написать GUI ( графический интерфейс пользователя) чтобы выводить сравнение сигналов на ПК по COM порту (UART). Данные выводить ввиде : Номер приемника- уровень сигнала, Номер приемника- Самый сильный сигнал.
Ниже приведен код который необходимо править.
// Hardware-specific library
#include
//#include
#include "cc2500_REG.h"
#define TFT_CS 9 // display Select
#define SCAN_CS 10 // scanner Select
#define TFT_RST 7 // display Reset (0 if use Arduino reset)
#define TFT_DC 8 // display Data/Command control line
#define RSSI_TRESHOLD 100 // treshold of RSSI alarm level
#define RSSI_OFFSET 95 // offset for displayed data
#define RSSI_OVERSAMPLE 50 // number of measures for each channel to found a max RSSI value
#define MAX_CHAN_QTY 205 // max number of channel for spacing 405.456543MHz
#define MAX_DISP_LINE 159 // max horizontal display resolution
#define MAX_SAMPLING 10 // qty of samples in each iteration (1...100)
byte cal[MAX_CHAN_QTY], rssi_data[MAX_DISP_LINE], data;
byte RSSI_data;
int RSSI_dbm, RSSI_max;
void setup(void) {
Serial.begin(9600);
pinMode(TFT_CS, OUTPUT);
pinMode(SCAN_CS,OUTPUT);
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV2); // max SPI speed, 1/2 F_CLOCK
digitalWrite(TFT_CS,HIGH);
digitalWrite(SCAN_CS,HIGH);
init_CC2500(); // initialise CC2500 registers
for (int i=0; i
{
WriteReg(CHANNR, i); // set channel
WriteReg(SIDLE, 0x3D); // idle mode
WriteReg(SCAL, 0x3D); // start manual calibration
delayMicroseconds(800); // wait for calibration
data = ReadReg(FSCAL1); // read calibration value
cal = data; // and store it
}
WriteReg(CHANNR, 0x00); // set channel
WriteReg(SFSTXON, 0x3D); // calibrate and wait
delayMicroseconds(800); // settling time, refer to datasheet
WriteReg(SRX, 0x3D);
}
void loop() {
for (int i=0; i
{
WriteReg(CHANNR, i); // set channel
WriteReg(FSCAL1, cal); // restore calibration value for this channel
delayMicroseconds(300); // settling time, refer to datasheet
RSSI_max = -120;
for (int j=0; j
digitalWrite(SCAN_CS,LOW); // select the scanner chip
SPI.transfer(REG_RSSI); // read RSSI register
RSSI_data = SPI.transfer(0);
digitalWrite(SCAN_CS,HIGH);
// convert RSSI data from 2's complement to signed decimal
if(RSSI_data >= 128) {
RSSI_dbm = (RSSI_data-256)/2-70;
}
else {
RSSI_dbm = RSSI_data/2-70;
}
if (RSSI_dbm > RSSI_max) RSSI_max = RSSI_dbm; // keep maximum
}
RSSI_max += RSSI_OFFSET;
if(RSSI_max > 110) RSSI_max = 110;
if(RSSI_max
rssi_data = RSSI_max;
//tft.drawFastVLine(i, 17, 110-RSSI_max, ST7735_BLACK);
//tft.drawFastVLine(i, 127-RSSI_max, RSSI_max, ST7735_GREEN);
}
//DrawScreen();
Serial.print(CHANNR);
Serial.print(rssi_data[CHANNR]);
}
void init_CC2500(){
WriteReg(SRES,0x3D); // software reset for CC2500
WriteReg(FSCTRL1,0x0F); // Frequency Synthesizer Control
WriteReg(PKTCTRL0,0x12); // Packet Automation Control
WriteReg(FREQ2,0x5C); // Frequency control word, high byte
WriteReg(FREQ1,0x4E); // Frequency control word, middle byte
WriteReg(FREQ0,0xDE); // Frequency control word, low byte
WriteReg(MDMCFG4,0x0D); // Modem Configuration
WriteReg(MDMCFG3,0x3B); // Modem Configuration
WriteReg(MDMCFG2,0x00); // Modem Configuration 0x30 - OOK modulation, 0x00 - FSK modulation (better sensitivity)
WriteReg(MDMCFG1,0x23); // Modem Configuration
WriteReg(MDMCFG0,0xFF); // Modem Configuration
WriteReg(MCSM1,0x0F); // Always stay in RX mode
WriteReg(MCSM0,0x04); // Main Radio Control State Machine Configuration
WriteReg(FOCCFG,0x15); // Frequency Offset Compensation configuration
WriteReg(AGCCTRL2,0x83); // AGC Control
WriteReg(AGCCTRL1,0x00); // AGC Control
WriteReg(AGCCTRL0,0x91); // AGC Control
WriteReg(FSCAL3,0xEA); // Frequency Synthesizer Calibration
WriteReg(FSCAL2,0x0A); // Frequency Synthesizer Calibration
WriteReg(FSCAL1,0x00); // Frequency Synthesizer Calibration
WriteReg(FSCAL0,0x11); // Frequency Synthesizer Calibration
}
void WriteReg(char addr, char value){
digitalWrite(SCAN_CS,LOW);
while (digitalRead(MISO) == HIGH) {
};
SPI.transfer(addr);
SPI.transfer(value);
digitalWrite(SCAN_CS,HIGH);
}
char ReadReg(char addr){
addr = addr + 0x80;
digitalWrite(SCAN_CS,LOW);
while (digitalRead(MISO) == HIGH) {
};
SPI.transfer(addr);
char y = SPI.transfer(0);
digitalWrite(SCAN_CS,HIGH);
return y;
}.
- Похожие заказы
- $3Прикладное ПО1 исполнительЗакрытгод назад
Написать программу которая из 1000 чисел выбирает четные числа на Ассемблере
Прикладное ПО1 заявкаЗакрытгод назад[b]Добрый день, Господа![/b] Требуется опытный знаток C/C++/ассемблер, умение работать с инструментами для обратной разработки. Имеется техническое задание для обратной разработки программы на C/C++ и деассемблирования. Имеется программа, которая используется в пентесте красной команды. На данном этапе синяя команда ...
Прикладное ПО1 исполнительЗавершенгод назадЕсть необходимость разработать чат-бота, который бы собирал уникальные комментарии с определенных постов в один файл. На ваш выбор, может собирать с поста в ТГ При этом необходимо учесть, что каждый новый комментарий проверяется на совпадение с ...
Прикладное ПО6 заявокЗакрытгод назад- $100
К примеру, у нас есть 1000 каналов. В каждом из них необходимо раз в 5 минут собирать данные по просмотрам последних трех постов и отправлять по API. Необходимо сделать это с помощью MadelineProto библиотеки. Так ...
Прикладное ПОнет заявокЗакрытгод назад Задача не очень большая. Необходимо адаптировать код который используется в расширении для Chrome. Конечный результат: код должен исполнятся из консоли браузера.
Прикладное ПО1 заявкаЗакрытгод назадЕсть проект на Django по работе с Telegram. Проект установлен на VPS и работает. Исходники и дамп БД есть, но нет файла с зависимостями. Необходимо реализовать три задачи: 1) Привязать домен к серверу 2) Добавить поля для привязки прокси с ...
Прикладное ПО1 заявкаЗакрытгод назад- $5
Система должна уметь:1. Вести выдачу и приемку книг2. Запоминать сколько какие книги у какого читателя3. Иметь систему штрафов за просроченные или утерянные книги4. Не выдавать книгу, которая уже на руках5. Каждой книги в библиотеке по ...
Прикладное ПО5 заявокЗакрытгод назад - $30
Необходима помощь в реализации MDB для вендингового аппарата + получение телеметрии.Писать код ненужно, достаточно консультация по алгоритму работы и принципу разбора протокола.оплата в usdt
Прикладное ПОнет заявокЗакрытгод назад Добрий день, Прошу допомогти з написанням невеличкої аплікації (парсер та арифметична аналітика). ТЗ у pdf файлі.
Прикладное ПО3 заявкиЗакрытгод назад