Skip to content

Commit 0eeda59

Browse files
initial implementation of thermometer
Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> Let's merge this and move forward with improvements. changes
1 parent 535bfe5 commit 0eeda59

16 files changed

+1874
-212
lines changed

lib/communication/science_lab.dart

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -415,39 +415,39 @@ class ScienceLab {
415415
}
416416

417417
Future<void> servo4(
418-
double angle1, double angle2, double angle3, double angle4) async {
419-
const int period = 10000;
418+
double? angle1,
419+
double? angle2,
420+
double? angle3,
421+
double? angle4, {
422+
int maxAngle = 180,
423+
int frequency = 50,
424+
}) async {
425+
final int period = (1000000 ~/ frequency);
420426
const int base = 750;
421-
const int range = 1900;
427+
final int range = maxAngle == 360 ? 3800 : 1900;
422428
const int params = (1 << 5) | 2;
423429

424430
try {
425431
mPacketHandler.sendByte(mCommandsProto.wavegen);
426-
427432
mPacketHandler.sendByte(mCommandsProto.sqr4);
428-
429433
mPacketHandler.sendInt(period);
430434

431-
int pulse1 = base + (angle1 * range ~/ 180);
432-
mPacketHandler.sendInt(pulse1);
433-
435+
mPacketHandler
436+
.sendInt(angle1 != null ? base + (angle1 * range ~/ maxAngle) : -1);
434437
mPacketHandler.sendInt(0);
435438

436-
int pulse2 = base + (angle2 * range ~/ 180);
437-
mPacketHandler.sendInt(pulse2);
438-
439+
mPacketHandler
440+
.sendInt(angle2 != null ? base + (angle2 * range ~/ maxAngle) : -1);
439441
mPacketHandler.sendInt(0);
440442

441-
int pulse3 = base + (angle3 * range ~/ 180);
442-
mPacketHandler.sendInt(pulse3);
443-
443+
mPacketHandler
444+
.sendInt(angle3 != null ? base + (angle3 * range ~/ maxAngle) : -1);
444445
mPacketHandler.sendInt(0);
445446

446-
int pulse4 = base + (angle4 * range ~/ 180);
447-
mPacketHandler.sendInt(pulse4);
447+
mPacketHandler
448+
.sendInt(angle4 != null ? base + (angle4 * range ~/ maxAngle) : -1);
448449

449450
mPacketHandler.sendByte(params);
450-
451451
await mPacketHandler.getAcknowledgement();
452452
} catch (e) {
453453
logger.e("Error in servo4(): $e");

lib/constants.dart

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,40 @@ String soundMeterError = 'Sound sensor error:';
259259
String soundMeterInitialError = 'Sound sensor initialization error:';
260260
String db = 'dB';
261261
String soundMeterTitle = 'Sound Meter';
262+
String playBackSummary = 'Playback Summary';
263+
String servo = 'Servo:';
264+
String percentage = '%';
265+
String pwmWaveForm = 'PWM Waveform';
266+
String close = 'Close';
267+
String timeMillisecond = 'Time (ms)';
268+
String low = 'LOW';
269+
String high = 'HIGH';
270+
String clearTimelineTitle = 'Clear Timeline?';
271+
String clearTimelineConfirmation =
272+
'Are you sure you want to clear the timeline?';
273+
String avgAngleLabel = 'Avg Angle';
274+
String maxAngleLabel = 'Max Angle';
275+
String minAngleLabel = 'Min Angle';
276+
String avgDutyLabel = 'Avg Duty';
277+
String maxDutyLabel = 'Max Duty';
278+
String minDutyLabel = 'Min Duty';
279+
String controlsTitle = 'Controls';
280+
String manualLabel = 'Manual';
281+
String feedbackLabel = 'Feedback';
282+
String duration1Min = '1min';
283+
String duration2Min = '2min';
284+
String frequency50Hz = '50Hz';
285+
String frequency100Hz = '100Hz';
286+
String angle180 = '180';
287+
String angle360 = '360';
288+
String angle180Display = '180°';
289+
String angle360Display = '360°';
290+
String clear = 'Clear';
291+
String hzSuffix = 'Hz';
292+
String clearTimelineTooltip = 'Clear Timeline';
293+
String manualMode = 'Manual Mode';
294+
String frequencyChange = 'Stop playback to change frequency.';
295+
String playBackStop = 'Playback stopped';
262296
String soundMeterIntro = 'Sound meter Introduction';
263297
String soundMeterDesc =
264298
'To measure the loudness in the environment in decibel(dB)';
@@ -301,3 +335,12 @@ String buyPsLabMenu = 'Buy PSLab';
301335
String faqMenu = 'FAQ';
302336
String shareAppMenu = 'Share App';
303337
String privacyPolicyMenu = 'Privacy Policy';
338+
String thermometerTitle = 'Thermometer';
339+
String thermometerIntro =
340+
'Thermometer instrument is used to measure ambient temperature. It can be measured using inbuilt ambient temperature sensor or through SHT21.';
341+
String celsius = '°C';
342+
String temperatureSensorError = 'Temperature sensor error:';
343+
String temperatureSensorInitialError =
344+
'Temperature sensor initialization error:';
345+
String temperatureSensorUnavailableMessage =
346+
'Ambient temperature sensor is not available on this device';

lib/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import 'package:pslab/view/about_us_screen.dart';
1515
import 'package:pslab/view/software_licenses_screen.dart';
1616
import 'package:pslab/theme/app_theme.dart';
1717
import 'package:pslab/view/soundmeter_screen.dart';
18+
import 'package:pslab/view/thermometer_screen.dart';
1819
import 'constants.dart';
1920

2021
void main() {
@@ -58,6 +59,7 @@ class MyApp extends StatelessWidget {
5859
'/roboticArm': (context) => const RoboticArmScreen(),
5960
'/luxmeter': (context) => const LuxMeterScreen(),
6061
'/soundmeter': (context) => const SoundMeterScreen(),
62+
'/thermometer': (context) => const ThermometerScreen(),
6163
},
6264
);
6365
}

0 commit comments

Comments
 (0)