Создать условие
- Войдите на сайт для отправки комментариев
Вс, 02/06/2019 - 22:52
Помогите пожалуйста создать условие.
Например если temp=20 то сигнал звучит один раз, если temp=25 то звучит 3 раза
Вот пример куска кода
Помогите пожалуйста создать условие.
Например если temp=20 то сигнал звучит один раз, если temp=25 то звучит 3 раза
Вот пример куска кода
if (temp==20) beep();
if (temp==25) {
beep();
pause();
beep();
pause();
beep();
}
Вот пример куска кода
Это ты дал нам инструкцию, как для тебя код вставлять?
Это кажись уже кто-то из модеров подправил сообщение. А чё, очень здравая идея - править посты тем кто не удосужился правильно вставить код, и вместо кода вставлять ссылку. Вот только работы такой будет выше крыши.
Ссылку вместо текста поставил я, намереваюсь так и в дальнейшем делать, приглашаю коллег-модераторов присоединяться.
Ссылку вместо текста поставил я, намереваюсь так и в дальнейшем делать, приглашаю коллег-модераторов присоединяться.
Добрый совет: модерам доступны доп. тэги оформления, емнип. Так что можно выделять надпись каким-нибудь цветом, и делать приписку вида
[moderator] : тут текст комментария
например:
[Araris]: пожалуйста, вставьте код правильно - http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
только текст красным, как вариант.
Спасибо, попробую.
Извините. Вот весь код. Работа с датчикоми 18B20 #include <LiquidCrystal.h> // include LCD library code #define DS18B20_PIN 10 // LCD module connections (RS, E, D4, D5, D6, D7) LiquidCrystal lcd( 7, 6, 5, 4, 3, 2 ); const int SoundPin = 9; // Пин подключения пьезоизлучателя – 9 дискретный int i; int raw_temp; int temp; char txt[] = " C "; void setup(void) { // start serial port Serial.begin( 9600 ); // set up the LCD's number of columns and rows lcd.begin( 16, 2 ); txt[ 0 ] = 223 ; // Put degree symbol (°) lcd.setCursor( 2, 0 ); lcd.print("Temperature:"); } void loop(void) { if(ds18b20_read( & raw_temp) ) { Serial.print("Temperature = "); temp = (float) raw_temp / 16 ; // Convert temperature raw value into degree Celsius (temp in °C = raw/16) Serial.print(temp) ; // Print temperature value in degree Celsius Serial.println("°C"); // Print '°C' // Display temperature on LCD lcd.setCursor( 4, 1 ); lcd.print(temp); lcd.print(txt); if (temp == 20){ // ***************** i++; //****************** if(i<2){ //****************** tone(SoundPin, 1000, 1000); //****************** } } } else { Serial.println("Communication Error!"); lcd.setCursor(4, 1); lcd.print(" Error! "); } delay(1000); } bool ds18b20_start(){ bool ret = 0; digitalWrite(DS18B20_PIN, LOW); // Send reset pulse to the DS18B20 sensor pinMode(DS18B20_PIN, OUTPUT); delayMicroseconds(500); // Wait 500 us pinMode(DS18B20_PIN, INPUT); delayMicroseconds(100); //wait to read the DS18B20 sensor response if (!digitalRead(DS18B20_PIN)) { ret = 1; // DS18B20 sensor is present delayMicroseconds(400); // Wait 400 us } return(ret); } void ds18b20_write_bit(bool value){ digitalWrite(DS18B20_PIN, LOW); pinMode(DS18B20_PIN, OUTPUT); delayMicroseconds(2); digitalWrite(DS18B20_PIN, value); delayMicroseconds(80); pinMode(DS18B20_PIN, INPUT); delayMicroseconds(2); } void ds18b20_write_byte(byte value){ byte i; for(i = 0; i < 8; i++) ds18b20_write_bit(bitRead(value, i)); } bool ds18b20_read_bit(void) { bool value; digitalWrite(DS18B20_PIN, LOW); pinMode(DS18B20_PIN, OUTPUT); delayMicroseconds(2); pinMode(DS18B20_PIN, INPUT); delayMicroseconds(5); value = digitalRead(DS18B20_PIN); delayMicroseconds(100); return value; } byte ds18b20_read_byte(void) { byte i, value; for(i = 0; i <8; i++) bitWrite(value, i, ds18b20_read_bit()); return value; } bool ds18b20_read(int *raw_temp_value) { if (!ds18b20_start()) // Send start pulse return(0); // Return 0 if error ds18b20_write_byte(0xCC); // Send skip ROM command ds18b20_write_byte(0x44); // Send start conversion command while(ds18b20_read_byte() == 0); // Wait for conversion complete if (!ds18b20_start()) // Send start pulse return(0); // Return 0 if error ds18b20_write_byte(0xCC); // Send skip ROM command ds18b20_write_byte(0xBE); // Send read command *raw_temp_value = ds18b20_read_byte(); // Read temperature LSB byte and store it on raw_temp_value LSB byte *raw_temp_value |= (unsigned int)(ds18b20_read_byte() << 8); // Read temperature MSB byte and store it on raw_temp_value MSB byte return(1); // OK --> return 1 }строки 36-40, необходимо переписать. Подумайте об алгоритме где есть 2 связанных события. 1 - наступило событие в котором t = 20 && музыка еще не играла.... 2 - температура еще t=20 а музака уже звучала. Вопрос, как МК поймет разницу между событиями?
напишите код для 2х кнопок, если нажать (и держать) первую играем 1 раз, если вторую - 3 раза... а потом этот код легко прицепить к требуемому, а понимать его будет проще...
Ссылку вместо текста поставил я, намереваюсь так и в дальнейшем делать, приглашаю коллег-модераторов присоединяться.
Увы, у основной массы, нет возможности править первый пост.(((( Только убить.((((