99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

合肥生活安徽新聞合肥交通合肥房產生活服務合肥教育合肥招聘合肥旅游文化藝術合肥美食合肥地圖合肥社保合肥醫院企業服務合肥法律

代寫SCC.369、C++語言編程代做
代寫SCC.369、C++語言編程代做

時間:2024-10-21  來源:合肥網hfw.cc  作者:hfw.cc 我要糾錯



SCC.369 Coursework 1: Working with GPIO
Moodle submission 16:00 Friday week 4; weighting 33% of module.
Aim
Having familiarized yourself with the C development environment and the basic process of writing to registers to control the GPIO pins, in this coursework you will explore some of the other functionality that’s possible with GPIO pins. Along the way you will get more comfortable working with registers to control the MCU and a better idea of the capabilities of the nRF52 series of MCUs. You will also start working with breadboards and electronic components.
Instructions for all subtasks
The coursework is split into a number of subtasks, listed below. Implement each one of them from first principles using pure C. This means that you are NOT permitted to use any library functions that you have not written yourself (apart from for debugging over serial) – only #include "MicroBit.h". In addition to C keywords and C operators, you can use typedefs, structs and literals from the nRF SDK.
We will be looking at and testing your code with the help of some automated scripts, so it’s super important that you follow the following guidelines. If you do not, you will lose marks:
1. Write and submit your CW in a file called CW1.cpp.
2. Start with the template CW1.cpp file on Moodle because it has all the functions correctly
listed, you just need to write the code for each one!
3. Within CW1.cpp, write your code for each subtask within the indicated section of the file.
4. Do not change the specified function prototypes (i.e. function name, parameters and return
type) for each subtask, use the ones given in the CW1.cpp template.
5. Do not include a main() function or main.cpp file in your submission, although you will of
course need to use one for your own testing. You might like to use the main() in MainSubtaskRunner.cpp because that’s what we will use when we test your code.
For each subtask, 20-30% of the marks will depend on code quality. The kinds of things we will be looking for include:
• Visually well-formatted and readable code
• Good, elegant code structure and style, e.g.:
o Appropriate use of loops, helper functions, literals etc.
o Initialise MCU peripherals only once where possible, e.g. don’t keep setting the
direction register of a GPIO port if the directions don’t keep changing.
o Only change the bits of a register that you need to, e.g. AND or OR in the bits you
need to change.
• Ample and thoughtful comments including:
o Before function definitions explaining function purpose, parameters etc. o What variables are used for
o The choice of bit patterns and/or literals being written to registers
o The purpose of writing to registers
o The purpose of loops etc.
• No commented-out code with no explanation!
Remember to have fun . Use the labs to ask about anything you don’t understand!
1

Subtask 1, 20%: Display a binary number that counts up at 5Hz
This subtask requires you to write two functions as follows:
Function prototype: void displayBinary(uint8_t value);
Set the bit pattern of a row of LEDs on the micro:bit to match the least significant 5 bits of the unsigned 8-bit value provided as a parameter. The least significant bit should be on the right when looking at the micro:bit with the USB cable pointing up. A ‘1’ in a bit position should turn the corresponding LED on, a ‘0’ should turn the LED off. You can use any row of LEDs on the micro:bit to show this 5 bit number, but only use one row – the LEDs on the other rows should not light up.
The first time displayBinary() is called it will need to initialise GPIOs. It’s good practice not to repeatedly re-initialise registers with the same value, so you could use a local static variable to record the first time displayBinary() is called so that subsequent calls don’t repeatedly initialise.
Function prototype: void countUpBinary(uint8_t initialValue);
Write a function that causes the number on the row you chose above to count up in binary, one count at a time, starting at the value passed in. You should call your displayBinary() function from above. After reaching a displayed count of 0b11111 the counter should ‘keep going’, i.e. wrap around to 0b00000. The frequency of counting should be 5Hz, i.e. 5 counts per second or 200ms per count. Think about how you can test the frequency of counting; the stretch goal is to see if you can adjust it to be within 5% of the target.
Subtask 2, 20%: Display a binary number that counts down/up with buttons A/B
For this subtask you will need to use two GPIO pins as inputs; use the ones connected to buttons A and B on the micro:bit. Check the micro:bit schematic to see which GPIOs they use. There is only one function to write:
Function prototype: void countWithButtonsBinary(uint8_t initialValue);
This function displays the initial count value passed in, using the displayBinary() function from Subtask 1, and updates the display with a new value when a micro:bit button is pressed. Button A should decrement the value by one count, and button B should increment it by one. To make this work well you will need to debounce the button inputs. The count should wrap around to 0b11111 when decremented below zero, and vice-versa. The count should only change on a button press, not on a button release, and it should not keep incrementing while a button is held down. Remember to use the relevant PIN_CNF[x] register to access all the settings you need.
Subtask 3, 25%: Measure and display an analogue voltage
NB the week 3 lecture will explain aspects of this Subtask.
For this subtask you will configure the GPIO connected to micro:bit pin P0 as an analogue input and read the voltage present on that pin. To test this you will need to apply a variable analogue voltage to that pin. You’ll need a breadboard, a micro:bit breakout adapter, a variable resistor and some jumper wires.
Wire up the ends of the variable resistor to power and ground, and connect the slider to P0.
For this subtask, in addition to your code please submit a photo of your working micro:bit/breadboard setup in .jpg format for some easy marks! Please name it ST3.jpg.
Function prototype: uint8_t sampleVoltage(void);
  2

Write a function to measure the magnitude of the analogue voltage on the large P0 pin of the micro:bit edge connector. There are many ways to configure the analogue-to-digital converter (ADC) on the nRF, but the important thing is that this function returns an 8-bit unsigned value where 0 represents an input of 0V and 255 represents an input of 3V (that the MCU is being powered from). Wire the variable resistor so that fully anticlockwise produces 0V on the wiper and fully clockwise 3V.
Function prototype: void displayVoltageBinary(void);
Write a function to repeatedly display in binary the magnitude of the analogue voltage measured on the large P0 pin. Use your displayBinary() function from Subtask 1 and make sure to display the five most significant bits of the sampled voltage so that the display reaches 0b00000 when the variable resistor is turned fully anticlockwise and 0b11111 when it’s turned fully clockwise.
Subtask 4, 25%: Drive an RGB LED
NB the week 3 lecture will explain aspects of this Subtask.
For this subtask you will connect an RGB LED to P1 (red), P8 (blue) and P9 (green) on the micro:bit edge connector, each via a current-limiting resistor. Use a 220R resistor for red and 100R for blue and green. The LED we are using is a common anode type.
Function prototype: void driveRGB(void);
You can drive the P1, P8 and P9 pins as regular GPIO outputs if you want to see how the LED works with one or more elements lit up. But for the coursework, control each pin with a PWM signal at roughly 1kHz. Driving all three colours at a fixed ratio of 50% on, 50% off gets you over half the marks. Making the LED ‘breathe’ by repeatedly fading from completely off to fully on and back over the course of 2-4 seconds for a full cycle gets more marks, and the stretch is to have the variable resistor from Subtask 3 control the colour at the same time the LED is breathing – a full turn of the resistor knob should run through a wide range of colours such that there are no obvious switches from one colour to another – a nice, gentle fade through a wide colour palette!
For this subtask, in addition to your code please submit a photo of your working micro:bit/breadboard setup in .jpg format for some easy marks! Please name it ST4.jpg.
Subtask 5, 10%: Display a binary number that counts up/resets on touch input
NB the week 3 lecture will explain aspects of this Subtask.
The final subtask has a lower weighting but is here to stretch you!
It’s like Subtask 2 but the display should count up by one count when you touch the golden micro:bit “face” logo above the LEDs. No need to worry about counting down for this subtask though.
Function prototype: void countWithTouchesBinary(uint8_t initialValue);
This function displays the initial count value passed in, using the displayBinary() function from Subtask 1, and increments the displayed number by one when the golden micro:bit face logo is touched. A “long-touch” to reset the count to the initialValue will get you extra marks 😊.
Mark Scheme
For each subtask, 70-80% of the marks will be awarded for meeting the functional requirements given. 20-30% of the marks will depend on code quality as described on the first page above. If you
   3

do not use the filename, function prototypes and hardware configuration specified (all repeated in red below) you will lose marks. Your work will be assessed by a combination of automatic processing and manual inspection. Your final grade will be based on a weighted mean of your subtask marks.
        Subtask
Hardware config
Weight
To be submitted
(submit code in CW1.cpp)
        1: Display a binary number that counts up at 5Hz
One row of micro:bit display
20%
displayBinary() countUpBinary()
         2: Display a binary number
that counts down/up with buttons A/B
Same row of micro:bit display; the micro:bit buttons
20%
countWithButtonsBinary()
        3: Measure and display an analogue voltage
Same row of micro:bit display; variable resistor wired to edge connector pin P0
25%
sampleVoltage() displayVoltageBinary() ST3.jpg photo of hardware
        4: Drive an RGB LED
RGB LED wired to edge
connector pins P1, P8 and P9
25%
driveRGB() ST4.jpg photo of hardware
        5: Display a binary number that counts up/resets on touch input
Same row of micro:bit display; the touch-sensitive micro:bit ‘face’ logo
10%
countWithTouchesBinary()
    4

請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp





 

掃一掃在手機打開當前頁
  • 上一篇:代做TUCH.UB25、代寫python語言程序
  • 下一篇:代寫CS 551、代做C/C++編程語言
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    急尋熱仿真分析?代做熱仿真服務+熱設計優化
    出評 開團工具
    出評 開團工具
    挖掘機濾芯提升發動機性能
    挖掘機濾芯提升發動機性能
    海信羅馬假日洗衣機亮相AWE  復古美學與現代科技完美結合
    海信羅馬假日洗衣機亮相AWE 復古美學與現代
    合肥機場巴士4號線
    合肥機場巴士4號線
    合肥機場巴士3號線
    合肥機場巴士3號線
    合肥機場巴士2號線
    合肥機場巴士2號線
    合肥機場巴士1號線
    合肥機場巴士1號線
  • 短信驗證碼 豆包 幣安下載 AI生圖 目錄網

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

          9000px;">

                欧美性生交片4| 国产丝袜美腿一区二区三区| 欧美日韩国产精选| 亚洲成人一区二区在线观看| 欧美日韩三级视频| 美女视频黄 久久| 精品国产123| 成人黄色777网| 午夜久久久久久久久| 精品1区2区在线观看| av电影天堂一区二区在线| 亚洲一区视频在线观看视频| 欧美一级在线观看| 国产精品一二一区| 亚洲永久精品大片| 精品欧美久久久| 99riav久久精品riav| 日本欧美一区二区在线观看| 国产午夜精品一区二区三区四区| 99久久婷婷国产精品综合| 午夜视频在线观看一区二区三区| 久久婷婷国产综合精品青草| 在线观看91精品国产入口| 六月丁香婷婷色狠狠久久| 亚洲色欲色欲www在线观看| 欧美一二三区在线观看| www.成人在线| 国产一区二区三区久久久| 一级中文字幕一区二区| 国产人妖乱国产精品人妖| 91精品国产综合久久香蕉的特点 | 亚洲欧美国产77777| 日韩色视频在线观看| 在线日韩一区二区| 99久久精品国产导航| 国产精品一区二区久久精品爱涩| 亚洲综合久久久| 国产精品久久久久久久浪潮网站| 欧美大白屁股肥臀xxxxxx| 欧美日精品一区视频| 色婷婷av久久久久久久| 成人av电影在线观看| 国产成人av电影| 国产精品一区专区| 韩国一区二区三区| 免费观看成人av| 免费久久精品视频| 日本视频一区二区| 天天综合网天天综合色| 亚洲一区视频在线观看视频| 亚洲精品成人少妇| 亚洲激情综合网| 亚洲综合丝袜美腿| 亚洲一区中文日韩| 亚洲国产视频一区二区| 亚洲国产日韩一级| 亚洲成人免费电影| 亚洲一区二区三区四区不卡| 亚洲精品自拍动漫在线| 亚洲免费观看高清完整版在线观看 | 国内精品久久久久影院色| 琪琪久久久久日韩精品| 日韩经典一区二区| 老司机午夜精品99久久| 黑人巨大精品欧美黑白配亚洲| 黄色小说综合网站| 成人黄色a**站在线观看| 91啦中文在线观看| 欧美日韩第一区日日骚| 日韩欧美亚洲国产精品字幕久久久| 日韩欧美在线不卡| 国产午夜精品理论片a级大结局 | 亚洲国产欧美另类丝袜| 午夜免费欧美电影| 狠狠色丁香久久婷婷综| 成人v精品蜜桃久久一区| 日本精品视频一区二区三区| 欧美麻豆精品久久久久久| 精品国产123| 亚洲精品国久久99热| 日韩**一区毛片| 成人av在线一区二区| 欧美三级日韩在线| 国产亚洲欧洲997久久综合| 亚洲精品欧美二区三区中文字幕| 午夜国产精品一区| 国产69精品久久久久毛片 | 国产亚洲欧洲一区高清在线观看| 亚洲免费视频中文字幕| 精品一区二区综合| 日本大香伊一区二区三区| 亚洲精品一区二区三区四区高清 | 日韩精品一区二区三区老鸭窝| 国产午夜精品在线观看| 午夜精品成人在线| 成人精品国产福利| 欧美电影免费观看完整版| 亚洲国产精品视频| 99视频精品全部免费在线| 精品久久久久久久久久久久久久久 | 久久久蜜桃精品| 亚洲一区二区在线免费看| 国产精品亚洲综合一区在线观看| 欧美色网一区二区| 中文字幕一区二区不卡| 精品午夜久久福利影院| 91蜜桃传媒精品久久久一区二区| 精品国产免费视频| 青青国产91久久久久久| 欧美在线不卡一区| 亚洲欧美经典视频| 91在线观看视频| 国产精品福利影院| 成人深夜视频在线观看| 久久综合精品国产一区二区三区 | 欧美一区在线视频| 五月婷婷欧美视频| 欧美图片一区二区三区| 亚洲品质自拍视频| 成人黄色免费短视频| 久久久99精品免费观看不卡| 捆绑紧缚一区二区三区视频 | 亚洲精品你懂的| 91亚洲精品一区二区乱码| 久久精品亚洲麻豆av一区二区| 麻豆国产欧美日韩综合精品二区| 精品视频一区二区三区免费| 一区二区三区av电影| 欧美在线不卡视频| 亚洲欧美日韩在线不卡| 一本大道综合伊人精品热热 | 国产福利不卡视频| 久久精品人人做| 国产精品自拍三区| 久久久久久一级片| 国产精品一二三四| 国产精品综合一区二区三区| 日韩欧美国产wwwww| 久国产精品韩国三级视频| 日韩欧美国产综合一区 | 亚洲欧美激情插| 在线观看精品一区| 三级成人在线视频| 日韩精品一区二区三区视频| 韩国成人精品a∨在线观看| 亚洲精品一区在线观看| 风间由美一区二区三区在线观看| 国产精品美女久久久久久2018| 国产成人精品三级麻豆| 18成人在线观看| 在线亚洲欧美专区二区| 日韩av电影天堂| 久久综合国产精品| 9色porny自拍视频一区二区| 夜夜嗨av一区二区三区网页| 91精品国产综合久久久蜜臀粉嫩| 国产精品久久久久影院色老大| 色噜噜狠狠成人中文综合| 调教+趴+乳夹+国产+精品| 亚洲精品一区二区三区香蕉| 91原创在线视频| 中文在线一区二区| 欧美日韩中文字幕一区| 久久爱www久久做| 亚洲视频在线观看三级| 91精品国产欧美一区二区成人| 国产夫妻精品视频| 亚洲3atv精品一区二区三区| 26uuu亚洲综合色| 色妞www精品视频| 国产精品一区二区视频| 亚洲h动漫在线| 国产精品视频麻豆| 6080国产精品一区二区| 成人黄色大片在线观看| 日本大胆欧美人术艺术动态| 国产精品三级在线观看| 日韩欧美亚洲一区二区| 日本高清不卡视频| 国产精品一区二区在线看| 亚洲va国产天堂va久久en| 国产精品久久久99| 国产福利91精品一区二区三区| 日韩美女主播在线视频一区二区三区| 成人app在线观看| 国产经典欧美精品| 久久99久久精品| 肉色丝袜一区二区| 一区二区三区欧美亚洲| 亚洲欧洲三级电影| 国产精品乱码一区二区三区软件| 91精品国产91久久综合桃花 | 成人丝袜视频网| 国内久久精品视频| 看片的网站亚洲| 亚洲成人tv网| 亚洲一区二区三区三| 亚洲精品中文在线观看| 最新国产成人在线观看| 国产精品视频一二三区|